插入排序,某一位置的数与前面已排好序的数从后向前比较,直到找到正确的位置。时间复杂度O(n方)
1 private static int[] insertSort(int[] arr) { 2 int j=0; 3 if (arr==null||arr.length<2) { 4 return arr; 5 } 6 // 将arr分成有序区和无序区,初始有序区有一个元素 7 // 0-(i-1) 为有序区;i-(length-1)为无序区 (i从1开始) 8 for (int i = 1; i < arr.length; i++) { 9 int tmp=arr[i]; //将位置i的值储存在tmp中 10 for (j = i; j>0&&arr[j-1]>tmp; j--) 11 arr[j]=arr[j-1]; // 如果已排好序的值比tmp大,则该元素移到下一位置 12 arr[j]=tmp; //将tmp放在正确的位置上 13 } 14 return arr; 15 }