当前位置: 代码迷 >> J2EE >> java插入排序,该如何解决
  详细解决方案

java插入排序,该如何解决

热度:106   发布时间:2016-04-21 23:54:52.0
java插入排序
哪位大神能给我讲一下插入排序,用java程序讲

------解决方案--------------------
东西在注释里已经写清楚了,如果你对这些东西感兴趣,关注下我的博客吧!
http://blog.csdn.net/zhangerqing
如有不懂,可以继续问,或者留言!
package com.xtfggef.algo;

/**
 * 直接插入排序 -Java实现 
 * 思路:从待排序的数中选出一个来,插入到 前面的合适位置
 * 
 * @author erqing
 * 
 */
public class Sort {
public static void main(String[] args) {
int data[] = { 8, 22, 78, 29, 1, 67, 99, 56 };
InsertSort is = new InsertSort();
is.data = data;
is.insertSort(data);
is.dsp();
}
}

/**
 * 直接插入排序的实现
 * 
 * @author erqing
 * 
 */
class InsertSort {

public int data[];

/**
 * tmp表示待插入的数,通过1处的while循环,找出最小的数, 通过2处将tmp插入
 * 
 * @param data
 */
public void insertSort(int data[]) {
int i, j, tmp;
for (i = 1; i < data.length; i++) {
tmp = data[i];
j = i - 1;
while (j >= 0 && tmp < data[j]) {// ----1------
data[j + 1] = data[j];
j--;
}
data[j + 1] = tmp;// ----2----
}
}
/**
 * 显示排序后的数据
 */
public void dsp() {
for (int k = 0; k < data.length; k++) {
System.out.print(data[k] + " ");
}
}
}

------解决方案--------------------
楼上的说的很详细了, 自己动手谢谢 调试看看
------解决方案--------------------
怎么最近都是问插入排序的啊,刚回答完一个。再来一次。另外楼主,插入排序的升级是shell排序,性能提升不少,是一种很稳定的排序。推荐楼主看一下
插入排序算法模板,直接插入排序是在把元素a[i]插入到已经排好序的a[0]—a[i-1]中,时间复杂度最差O(N^2),最好O(N)

    /**
     * 直接插入排序
     * @param sortArray
     */
    public static void InsertSort(int[] sortArray){
        
        for(int i=1;i<sortArray.length;i++){
            int compareVale = sortArray[i];
            int j = i;
            while(j>0 && compareVale<sortArray[j-1]){
                //----->如果compareVale小于sortArray[j],则后退
                sortArray[j]=sortArray[j-1];
                j--;
            }
            sortArray[j]=compareVale;
        }  
    }
  相关解决方案