插入排序 一、概念 二、复杂度 三、代码实现 冒泡排序 快速排序 选择排序 堆排序 希尔排序(缩小增量排序) 归并排序-递归实现 基数排序

每次将一个待排序记录按照关键码的大小插入到一个已排好序有序序列中,直到全部记录排好序。

二、复杂度

排序方法 最差时间分析 最好时间分析 平均时间复杂度 空间复杂度 稳定性
插入排序 O(n2) O(n) O(n2) O(1) 稳定

三、代码实现

 1 package sort;
 2 
 3 import java.util.Arrays;
 4 
 5 //插入排序
 6 public class InsertSort {
 7     public void insertSort(int[] array){
 8         if(array.length == 0 || array == null)
 9             return;
10         int currentValue = 0;//每次排序需要的值
11         for(int currentIndex = 1; currentIndex < array.length; currentIndex++){
12             int lastSortedIndex = currentIndex-1;//最后排好序的位置指针
13             currentValue = array[currentIndex];
14             for(;lastSortedIndex >= 0 && currentValue < array[lastSortedIndex];lastSortedIndex--){
15                 array[lastSortedIndex+1] = array[lastSortedIndex];//后移
16             }
17             array[lastSortedIndex+1] = currentValue;
18             printArray(array,currentIndex);
19         }
20     }
21     public void printArray(int a[],int count){
22         if(count != 0)
23         System.out.print("第" + count + "次   ");
24         for(int m = 0; m < a.length; m++){
25             if(count == m && count != 0)
26                 System.out.print("|");
27             System.out.print(a[m] + " ");
28         }
29         System.out.println();
30     }
31     public static void main(String[] args) {
32         int a[] = {11,7,6,1,8,4,3,2};
33         InsertSort is = new InsertSort();
34         is.insertSort(a);
35         Arrays.sort(a);
36     }
37 }

插入排序
一、概念
二、复杂度
三、代码实现
冒泡排序
快速排序
选择排序
堆排序
希尔排序(缩小增量排序)
归并排序-递归实现
基数排序

冒泡排序

快速排序

选择排序

堆排序

希尔排序(缩小增量排序)

归并排序-递归实现

基数排序