日期:2014-05-20  浏览次数:20730 次

插入排序之直接插入排序
/**
* 直接插入排序
* 分析:最坏情况下进行n*(n-1)次计算,时间复杂度为o(n2)。因此插入排序
* 不适用于数据量比较大的时候的排序,
* 如果需要排序的数据量较小,那么插入排序还是不错的。
*/
public static void Insert_Sort1(){
int[] seq = {6,3,2,5,7,8,1};
int length = seq.length;
for (int i=0; i<length; i++){
System.out.print(seq[i]);
}
System.out.println();

for(int m=1; m<length; m++){
int k = seq[m];
for (int n=m-1; n>=0 && seq[n]>k; n--){
seq[n+1] = seq[n];
seq[n] = k;
}
}
for (int i=0; i<length; i++){
System.out.print(seq[i]);
}
}

public static void Insert_Sort2(){
//有问题
int[] seq = {6,3,2,5,7,8,1};
int length = seq.length;
for (int i=0; i<length; i++){
System.out.print(seq[i]);
}
System.out.println();

int m,n;
for(m=1; m<length; m++){
int k = seq[0];
if (seq[m]<seq[m-1]){
seq[0] = seq[m];
n = m-1;
do{
seq[n+1] = seq[n];
n--;
}while(n>=0 && seq[0]<seq[n]);
seq[n+1] = k;
}
}
for (int i=0; i<length; i++){
System.out.print(seq[i]);
}
}


------解决方案--------------------
改为
while (n >= 0 && seq[n] >= k) {

你要的是怎么样的~