插入排序的java实现
插入排序的基本原理:插入排序就像是打扑克一样,从右往左遍历,比较数据的大小,当数据小于遍历到的值,则替换(往已经排好序的数据中插入数据)。
插入排序的时间复杂度:O(n2)
插入排序的算法稳定性:不会改变相同元素的相对位置,算法是稳定的。
插入排序的java代码实现:
public class Insertion { public static void insertionSort(Comparable[] arr){ for (int i = 1; i < arr.length; i++) { for(int j = i; j > 0; j--){ // 倒叙比较 if(!greater(arr[j], arr[j - 1])){ exch(j, j - 1, arr); }else { break; } } } } public static boolean greater(Comparable a, Comparable b){ return a.compareTo(b) > 0; } public static void exch(int i, int j, Comparable[] arr){ Comparable temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void main(String[] args) { Integer[] arr = {1, 10, 4, 2, 3, 5, 6, 7, 9, 11, 23}; Insertion.insertionSort(arr); System.out.println(Arrays.toString(arr)); } }