/**
* 插入排序
* 思路:
* 序列的第一个数,它可以看成是一个有序的序列,然后从序列的第二个数开始,依次插入前边的有序序列,使其依然有序,
* 直到最后一个数插入完成,整个序列就是一个有序序列了
*
*/
public class InsertSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] data = {2, 3, 4, 546, 234, 2 , 1, 5, 547, 234, 2, 7 ,5 ,8, 4};
insertSort(data);
for(int i : data){
System.out.print(i+" ");
}
}
public static void insertSort(int[] data){
if(data == null) return ;
for(int i = 1; i < data.length; i++){
//当前需要插入的值的位置
int j = i;
//取出当前需要插入的值
int temp = data[j];
//j >= 1 才能继续和 j-1 的值比较
while(j >=1 && temp < data[j-1]){
data[j] = data[j-1];
j--;
}
if(j >= 1){
//说明temp >=data[j-1]成立才跳出循环,可以插入data[j]
data[j] = temp;
}else{
//说明是 j==0 才跳出循环,那么temp最小,可以插入data[0]
data[j] = temp;//j==0
}
}
}
}