C#中如何为数组排序?

来源:百度知道 编辑:UC知道 时间:2024/06/28 10:49:25
int[] num={1,2,3,4,5,6,7,8,9};//把它降序排列
int[] num1=new int[9];
int max=0;
for(int a=0;a<num1.Length;a++)
{
for(int i=0;i<num.Length;i++)
{
if(max<num[i])
{
if(max==num[i])
{
max=num[i-1];
continue;
}
max=num[i];
}
num1[a]=max;
}
这段代码哪错了?
为什么?

你这个输出的是9个9,错误是因为:
你的第一个for循环是想得到9个数,但是你的第二个循环得到的总是最大的数,所以最后输出的总是9。
按照你的思路你可以这样做:第二个for循环,第一次循环的时候比较前9(总数)个数,得到最大的数,然后把得到的这个数与最后一位交换,然后再循环比较前8个数,得到第二大的数,一次类推。
这个方法太笨了~~!
建议用冒泡方法,

用冒泡排序

for(int i = 0; i < num1.Length; i++)
{
bool complete = false;
for(int j = 0; j < num1.Length - i; j++)
{
if(num1[j] < num1[j+1])
{
int t = num1[j+1];
num1[j+1] = num1[j];
num1[j] = t;
complete = true;
}
}
if(!complete)//如果上面执行完第二重循环都没有进到if里就是排完了
{
break;
}
}

//一个冒泡不就搞定啦

int[] num={1,2,3,4,5,6,7,8,9};//把它降序排列
int tmp=0;
for(int a=0;a<num.Length-1;a++)
{
for(int b=a+1;b<num.Length;b++)
{
if(num[a]<num[b])
{
tmp=num[a];
num[a]=num[b];
num[b]=tmp;
}

}
}

冒泡 C语言 还不是一样的
同意楼上几位的