一个数组排序的问题。
两两之间比较,把最大的排到最左边。从大往小排列。下面数组我已经给初始化了,免得自己输入。。。
但是输出结果有问题。不知道错在哪,大家帮忙修改修改。谢谢了。
#include <stdio.h>
#define ARR_SIZE 10
main()
{
int n,i,j,t,max;
int num[ARR_SIZE]={1,3,2,5,4,6,7,5,8};
printf("pls enter a number n:\n");
scanf("%d",&n);
for(i=0;i<n-1;i++)/*要选择的次数:0~n-2共n-1次*/
{
max=i;/*假设当前下标为i的数最大,比较后再调整*/
for(j=i+1;j<n;j++)/*循环找出最大的数的下标是哪个*/
{
if(num[j]>num[max])
{
max=j;/*如果后面的数比前面的大,则记下它的下标*/
}
}
t=num[i]; /*如果min在循环中改变了,就需要交换数据,互换num[i]num[j]位置*/
num[i]=num[j];
num[j]=t;
/*应该改成num[i]num[max之间的交换]*/
}
for(i=0;i<n;i++)
printf("%d ",num[i]);
getch();
}
[[it] 本帖最后由 soler_z 于 2009-7-22 17:36 编辑 [/it]]