插入排序

插入排序好似我们打扑克牌时放牌一样,

假如有这样一个数组:

 

1.把数组分成两个部分,已排序区和未排序区,假如我们认为第一个数已排序

 

 

2.将 index=1的和已排序区的末尾数进行比较,如果比2小就交换:

 

 

3. 交换以后我们认为index 等于0和1的我们排好序了;然后继续5来放入已排序的扑克牌中

 

 

 再将index=3的扑克牌插入到已排序中

4.1比5小,1和5交换:

 

 

 然后1比3小,又和3交换

 

 

 1和2比,1<2,交换:

 

 5.8比5大,不交换

 

 完成排序

 

代码:

 1 package com.sort.demo;
 2 
 3 public class InsertSort extends Sort {
 4 
 5     @Override
 6     public void sort(int[] arr) {
 7         for (int i = 1; i < arr.length; i++) {
 8             for (int j = i; j >=1 && arr[j] < arr[j - 1]; j--) {
 9                 swap(arr, j, j - 1);
10             }
11         }
12     }
13 
14     public static void main(String[] args) {
15         InsertSort sort = new InsertSort();
16         Test.test(sort);
17     }
18 
19 }
插入排序

 

 

时间复杂度,如果是有序数组,则时间复杂度是O(N)

如果是倒序,时间复杂度是O(n²)

空间复杂度是O(1)

posted @ 2019-11-11 15:52  懒人写博客  阅读(256)  评论(0编辑  收藏  举报