using System;
class Test
{
public static void Main()
{
int i,j,k,m;
int[] Que = new int[]{5,2,8,36,12,24,88,1,105,66};
for(j=0;j<Que.Length;j++)
{
k=j; //为什么要让k=j啊   ???   我不明白
for(i=j+1;i<10;i++)//从j的下一个元素起开始比较
{
if(Que[i] < Que[k])//比较数组元素
k=i; //使k为较小的数的下标
}
if(k!=j)
{
m = Que[j]; //交换Que[k]和Que[j]的值
Que[j] = Que[k]; //比较的数组元素
Que[k] = m; //把获得较小的数赋给Que[j]
}
}
Console.WriteLine("请输出排序后的结果:");
for(j=0;j<10;j++)
Console.WriteLine("{0}",Que[j]);//通过for循环,输出数组元素
}
}
为什么要一开始,为什么要让k=j啊,,执行的结果是int[]Que里的数由小到大排列.

解决方案 »

  1.   

    基本的冒泡排序吧,每趟排序的结果是:把最小值放到最前面k=j; //为什么要让k=j啊   ???   我不明白
    for(i=j+1;i<10;i++)//从j的下一个元素起开始比较
    {
    if(Que[i] < Que[k])//比较数组元素
    k=i; //使k为较小的数的下标
    }
    k为剩余没有排序的元素中的最小值的下标
      

  2.   

    贴个插入排序的算法,看起来稍微短一点,哈哈:
            int t,i,j;
            for (i = 1; i < Que.Length; i++)
            {
                t = Que[i];
                for (j=i;(j>0)&&(Que[j-1]>t); j--)
                {
                    Que[j] = Que[j-1];
                }
                Que[j] = t;            
            }