插入排序

Posted yuanfei1110111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入排序相关的知识,希望对你有一定的参考价值。

插入排序类似于整理扑克牌,基本操作是将一个记录分为有序数列、待插入数列,将待插入数列依次插入到有序数列中对应的位置,最终得到一个有序的数列;

插入排序的时间复杂度为O(n^2),空间复杂度为O(1),是稳定的排序方法,适用于数量较少的排序,相对冒泡排序而言是一种较为快捷方便的排序算法。

具体步骤:
1.默认序列中第0个元素是有序的;
2.从下标为1的元素开始,取当前下标i位置处的元素a[i]保存到一个临时变量waitInsert中;
3.对前半部分有序序列循环遍历,并与waitInsert比较,直到遇到一个比waitInsert小的元素(这里默认从小到大排序),此时的下标为j,那么现在只需要对a[j+i]进行赋值waitInsert即可;
4.将待插入元素的下标i向后推移一个位置;
5.重复2~4步骤,直到乱序序列中的元素全部被插入到有序序列中;

示例代码:
public class Test {

    public static void main(String[] args) {
        
        int[] arr = {6, 3, 8, 2, 9, 1};
        System.out.println("排序前数组为:");
        for(int i : arr) {
            System.out.print(i + ", ");
        }
        System.out.println();
        sort(arr);
        
        System.out.println("排序后数组为:");
        for(int i : arr) {
            System.out.print(i + ", ");
        }
        
    }
    
    public static void sort(int[] arr) {
        for(int i=1; i<arr.length; i++) {
            int j = i;
            int waitInsert = arr[i];
            while(j > 0 && waitInsert < arr[j - 1]) {
                arr[j] = arr[j-1];
                j--;
            }
            arr[j] = waitInsert;
        }
    }
    
    
    
}






















































以上是关于插入排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法 插入排序(直接插入排序半插入排序希尔排序)

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

算法插入排序——希尔排序+直接插入排序

第三篇,插入排序算法:直接插入排序希尔排序

❤️数据结构入门❤️(4 - 3)- 插入排序

java排序之插入排序(直接插入排序和希尔排序)