C# 的一个算法小问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

是插入排序 程序在这了 书上的 我有点看不太明白 请高手把Sort方法里面的语句给我详细解释一下(最好是每句都解释下) 尤其是那个while循环 嘿嘿 我是初学者 大家别嫌麻烦啊 毕竟算法也不长 主要是那个Sort方法 和While循环里面的 算法如下:

public class sorter{

public void Sort(int [] list){

for(int i=1;i<list.length;i++){

int t = list[i] ;
int j = i ;

while( (j>0) && (list[j-1]>t) ){
list[j] = list[j-1];
--j;
}
list[j]=t;
}
}
}

Main方法我就不写了 请高手给我把上面的详细解释一下 灰常感鸡
最新回答
释放

2024-04-20 03:06:59

public void Sort(int [] list){ //传入参数--int型的数组

for(int i=1;i<list.length;i++){//当i小于数组的长度时执行循环

int t = list[i] ;//把下标为i的数组元素赋值给t
int j = i ;//把下标i赋值给j
//当j>0并且下标为i-1的数组元素小于下标为i的数组元素时执行循环
while( (j>0) && (list[j-1]>t) ){
//即如果list[j-1]>t把大的数组元素与小的调换位置
list[j] = list[j-1];
--j;//再比较下一个
}
list[j]=t;//即如果list[j-1]<t,i下标不变
}
}
素婉纤尘

2024-04-20 00:37:39

插入排序算法:

1.从有序数列和无序数列{a2,a3,…,an}开始进行排序;
2.处理第i个元素时(i=2,3,…,n) , 数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;
3.重复第二步,共进行n-1次插入处理,数列全部有序。
夜莺与鲸

2024-04-20 02:28:15

建议你吧程序在电脑上打出来,然后一步一步的看,自己悟出来才是自己的
抹茶落季

2024-04-20 01:40:55

打酱油