插入排序
原理
把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
时间复杂度
O(n^2) ,稳定
API模板
package DataStructureAndAlgorithm.Sort.SimpleSort;
/**
* 插入排序
*/
public class Insertion {
//排序
public static void sort(Comparable[] c){
for(int i=1;i<c.length;i++){
for (int j=i;j>0;j--){
if(greater(c[j-1],c[j])){
exch(c,j-1,j);
}else {
break;
}
}
}
}
//判断前者是否大于后者
private static boolean greater(Comparable c1 ,Comparable c2){
return c1.compareTo(c2)>0;
}
//交换顺序
private static void exch(Comparable[] c,int i,int j ){
Comparable temp =c[i];
c[i]=c[j];
c[j]=temp;
}
}