近期写程序时候,需要算法,将一堆数字按照一定顺序排列,将最大值排中间,而后将次大值依次排在最大值两边,其余类推,也就是保证越大的值越靠近中心,越小的值越靠近两边。
思路
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) |