排序算法可以分为基本排序算法和高级排序算法,如果从基本算法里找出性能最好的算法,那么插入排序算是不二之选了.他的时间复杂度T(n2),但是要比冒泡和选择排序都要快一点.他的实现类似于QQ斗地主中抓牌一样.把一个待排序的数据按照大小,插入一个已经排序好的序列中.如下所示,当你抽牌的时候,系统会自动帮你把牌放入到合适的位置.
public class Test { /** * @param args */ public static int[] objTest=new int[]{13,12,11,9,7,6,5,5,3,8}; //手牌序列 public static void main(String[] args) { // TODO Auto-generated method stub insertion_sort(objTest); for(int i=0;i<objTest.length;i++){ System.out.print(objTest[i]+" "); } } /** * 插入排序实现 * @param arr 要插入其中的序列 */ public static void insertion_sort(int[] arr){ int length=arr.length-2; //要对比的序列中最后一个数据的位置 int data =arr[9]; //要插入的数据 for(int i=arr.length-2;i>=0;i--){ if(data<arr[i]){ int index=i+1; //数组依次后移 while(length+1>index){ arr[length+1]=arr[length]; length--; } arr[index]=data; break; //跳出循环 } } } }