插入排序:
基本思想:假设前面(n-1)[n>=2]个数已经排好,现在要把第n个数插到前面有序数中。反复循环。
/**
* 插入排序
* @author Ant
*
*/
public class InsertSort {
/**
* 基本思想:假设前面(n-1)[n>=2]个数已经排好,现在要把第n个数插到前面有序数中。反复循环
* @param a
* @return
*/
public static void insertSort(int[] a){
// 假设第一个有序
for (int i = 1; i < a.length; i++) {
// 如果后一个比前一个小
if (a[i] < a[i - 1]) {
// 把后一个数据存起来
int temp = a[i];
int j;
// 从后往前挪位置,找最合适放temp的地方。
for (j = i - 1; a[j] > temp && j > 0; j--) {
a[j + 1] = a[j];
}
//把temp放在最适合的位置
a[j + 1] = temp;
}
}
}
public static void main(String[] args) {
int a [] = {38, 24, 10, 3, 5, 18};
InsertSort.insertSort(a);
for(int i = 0; i < a.length; i++){
System.out.println(a[i]+" ");
}
}
}