Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9814
  • 博文数量: 4
  • 博客积分: 140
  • 博客等级: 入伍新兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-23 21:20
文章分类
文章存档

2011年(2)

2010年(1)

2009年(1)

我的朋友

分类: C/C++

2011-03-13 11:16:37

近期写程序时候,需要算法,将一堆数字按照一定顺序排列,将最大值排中间,而后将次大值依次排在最大值两边,其余类推,也就是保证越大的值越靠近中心,越小的值越靠近两边。
思路
1、首先将该数字排序
2、排序后,将第一个数(最小值)作为第一个,将第二个值(次小值)作为右边第一个。剩下的依次类推。
 
1、将数字排序使用冒泡算法。
vc++代码如下:
#include
#include
using namespace std;
void main()
{
 int toBeSort[20]={2,1,3,4,7,6,5,8,9,20,11,13,12,14,16,18,19,15,23,25};
 int tmp_sort[20];
int a ;
 memcpy(tmp_sort,sizeof(toBeSort)/sizeof(int),sizeof(toBeSort));
//冒泡排序
for(int i=sizeof(toBeSort)/sizeof(int);i>0;i--)
   {
     for(int j=0;j
       {
       if( tmp_sort[j]>tmp_sort[j+1])
         {
         a=tmp_sort[j];
         tmp_sort[j]=tmp_sort[j+1];
         tmp_sort[j+1]=a;
      
         }
       } 
 
   }
 
//将大值放中间,小值放两边
for(int nLoop=0;nLoop
{
  if(nLoop%2==0)
  {
  tmp_ass_sort[nLoop/2]=tmp_sort[nLoop];
  }
 else
  {
  tmp_ass_sort[sizeof(tmp_sort)/sizeof(int)-1-nLoop/2]=tmp_sort[nLoop];
  }
 
}
 
 
}
 
以上代码在VC++中编译通过,并演示正确。
 
阅读(307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~