当前位置: 代码迷 >> Java相关 >> 插入排序之直接插入排序,该如何处理
  详细解决方案

插入排序之直接插入排序,该如何处理

热度:6155   发布时间:2013-02-25 21:48:42.0
插入排序之直接插入排序
/**
* 直接插入排序
* 分析:最坏情况下进行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) {

你要的是怎么样的~
  相关解决方案