直接插入排序Straight_Insertion_Sort
基本思想:简单排序的一种。如果玩过扑克牌应该都知道顺子,这时有一把顺子但是顺序是乱的,你要去按顺序整理。那第二张牌和第一张牌比较,调整顺序后前两张牌就是有序的,接着第三张牌插入前两张的有序列中,形成三张牌的有序序列。以此类推,最后能够获得一个按顺序排列的顺子。
算法复杂度:O(n^2)
代码:
public class Insertion_Sort { static void insertion(int [] a) { for (int i = 1; i < a.length; i++) { int sen = a[i]; int j = i - 1; for (; j >= 0; j--) if (a[j] > sen) a[j + 1] = a[j]; else { break; } a[j + 1] = sen; for (int n:a) System.out.print(n+" "); System.out.println(); } } public static void main(String []args) { int [] a = {5,8,7,1,4,3,2}; insertion(a); } }
输出结果:
5 8 7 1 4 3 2 //8插入5
5 7 8 1 4 3 2 //7插入{5,8}
1 5 7 8 4 3 2 //1插入{5,7,8}
1 4 5 7 8 3 2 //4插入{1,5,7,8}
1 3 4 5 7 8 2 //3插入{1,4,5,7,8}
1 2 3 4 5 7 8 //2插入{1,3,4,5,7,8}