插入排序复习

Posted 小智RE0

tags:

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

基本思想将一个元素插入到有序的数组中

先假设前面的第一个元素是已经排好序的数组;不断从后面依次访问元素,放入到前面的有序数组中,根据由小到大的规则调整这个元素在有序数组中的位置(逐个比较交换),…直到当前数组结束;

还是在912. 排序数组题进行测试

基本思想步骤

class Solution 
    public int[] sortArray(int[] nums) 
        int n = nums.length;
        //插入排序;
        //假定前面的是有序数组,从第2个元素开始;
        for(int i =1;i<n;i++)
            for(int j=i;j>0;j--)
                //注意是要和前面的有序数组比较;
                if(nums[j]<nums[j-1])
                    swap(nums,j-1,j);
                else
                    break;
                
            
        
        return nums;
    
    //交换方法;
    private void swap(int[] nums,int a,int b)
        //简单的临时变量交换法;
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] = temp;
    

或者写成

class Solution 
    public int[] sortArray(int[] nums) 
        int n = nums.length;
        //插入排序;
        //假定前面的是有序数组,从第2个元素开始;
        for(int i =1;i<n;i++)
            for(int j=i;j>0 && nums[j]<nums[j-1];j--)
                //注意是要和前面的有序数组比较;
                swap(nums,j-1,j);
            
        
        return nums;
    
    //交换方法;
    private void swap(int[] nums,int a,int b)
        //简单的临时变量交换法;
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] = temp;
    

当然,会超时的;

那么优化时,通过避免交换方式,
转而使用比较赋值即可;将当前数先存入一个第三方变量;
当前元素和前面的有序数组比较时,找到合适位置,将第三方变量的值放到合适位置即可;

class Solution 
    public int[] sortArray(int[] nums) 
        int n = nums.length;
        //插入排序;
        //假定前面的是有序数组,从第2个元素开始;
        for(int i =1;i<n;i++)
            int dsf = nums[i];
            int j=i;
            for(;j>0;j--)
                //注意是要和前面的有序数组比较;
                if(dsf<nums[j-1])
                  //若前面的值大,则把它的值覆盖到当前元素位置;  
                  nums[j] = nums[j-1];
                else
                    break;
                
            
            //将第三方变量的值交到合适位置;
            nums[j] = dsf;
        
        return nums;
    


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

插入排序[数据结构](复习)

数据结构复习之--“插入排序”-JAVA实现

插入排序算法,复习

2023数据结构考研复习-排序

2023数据结构考研复习-排序

经典算法复习-插入排序算法