排序算法——直接插入排序

介绍

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class 直接插入排序 {

public static int[] order(int[] a){

if (a == null){
return null;
}
if (a.length == 0 || a.length == 1){
return a;
}
// 每次插入一个元素到合适位置
       for (int i = 1; i < a.length ; i++) {
// 将当前位置的值插入到合适地方
           int currNum = a[i];
int j = i - 1;
while (j >= 0 && a[j] > currNum){
a[j + 1] = a[j];
j --;
}
a[j + 1] = currNum;
}
return a;
}

public static void main(String[] args) {
int[] a = {6,3,2,9,5,3,1,0};
System.out.println(Arrays.toString(order(a)));
}
}

时间复杂度:O(n*n)

空间复杂度:O(1)

算法稳定性:假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并且排序之后,a[i]仍然在a[j]前面。则这个排序算法是稳定的!

直接插入排序是稳定的排序算法