直接插入排序的基本思想:将一个记录插入到已经排好序的记录中,从而得到一个有序的,记录数增一的有序表.
核心代码:
public static void insertSort(int[] data){
for(int i=1; i<data.length; i++){
if(data[i]<data[i-1]){ // 如果当前数比前一个数小
int cur = data[i]; // 把当前数记录下来
int j = i - 1; // 用j来记录当前数的前一个数的下标
for(; j>=0&&cur<data[j]; j--){
data[j+1] = data[j];
}
data[++j] = cur; // j要记得++
}
}
}
完整代码:
package cn.ccnu.sort;
public class Insert {
public static void insertSort(int[] data){
for(int i=1; i<data.length; i++){
if(data[i]<data[i-1]){ // 如果当前数比前一个数小
int cur = data[i]; // 把当前数记录下来
int j = i - 1; // 用j来记录当前数的前一个数的下标
for(; j>=0&&cur<data[j]; j--){
data[j+1] = data[j];
}
data[++j] = cur; // j要记得++
}
}
}
public static void main(String[] args) {
int[] data = {10, 3, 12, 5, 4, 9, 4, 7, 6};
insertSort(data);
for (int i : data) {
System.out.print(i + " ");
}
}
}