插入排序,相比选择排序,插入排序要稍微复杂一点,不过没关系,待我一一道来。
大家都玩过扑克牌,当我们拿拍的时候,我们手上的牌,基本都是有序的。为什么说是基本说呢?因为有一些高手,故意把牌得顺序打乱,避免别人看你抽牌的动作来算你的牌,呵呵。扯远了。言归正传,我们还是说说基本的。我们手上的牌都是有序的,当我们拿起一张牌,我们需要把这张牌插到现有的有序牌中。这就是插入排序的核心思想!!!!,用一张简单的图如下:
它的实现如下:
package com.ibm.sort;
public class InsertSort {
public static void main(String[]args){
int a[] = {9,12,8,6,9,20,15};
sort(a);
for(int x:a){
System.out.println(x);
}
}
public static void sort(int array[]){
for(int i=0;i<array.length-1;i++){
insert(i+1, array);
}
}
private static void insert(int k,int array[]){
if(array[k]<=array[0]){
int temp = array[k];
for(int m=k;m>0;m--){
array[m]=array[m-1];
}
array[0]=temp;
return;
}else if(array[k]>=array[k-1]){
return;
}else {
for(int i=0;i<k;i++){
if(array[i]<=array[k]&&array[i+1]>=array[k]){
int temp = array[k];
for(int m=k;m>i;m--){
array[m]=array[m-1];
}
array[i+1] = temp;
continue;
}
}
}
}
}
本算法到此为止。那么,今天的算法学习也就到此为止,有时间我再学习其它算法,再来帖代码。申明:所有代码均为原装货,如有雷同,纯属巧合。