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里的数由小到大排列.
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里的数由小到大排列.
for(i=j+1;i<10;i++)//从j的下一个元素起开始比较
{
if(Que[i] < Que[k])//比较数组元素
k=i; //使k为较小的数的下标
}
k为剩余没有排序的元素中的最小值的下标
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;
}