插入排序(常见经典排序算法)

基本思路:

  1. 从第二个元素开始进行排序,第二个元素与前面的第一个元素进行比较,如果大就保持不动,如果小于第一个元素就往前移。
  2. 然后第三个元素与前面已经排序好的元素(前两个)从右到左(从大到小)依次进行比较,直到被比较的数小于或等于第三个元素,然后插入到这个元素的后面。
  3. 重复上面的过程,直到最后一个元素比较完成,一共进行了n-1趟。

平均时间复杂度:O(n^{^{2}}

 图示展示:

import java.util.Arrays;

public class InsertSort {
    public static void main(String[] args) {
        int[] arr = {5,4,3,2,1,-1,-5,-3};
        System.out.println("未排序数组:"+ Arrays.toString(arr));
        insertSort(arr);
        System.out.println("未排序数组:"+ Arrays.toString(arr));
    }

    public static void insertSort(int[] arr){
        for (int i=1;i<arr.length;i++){//插入排序从第二个元素开始进行,// 所以这里i(作为索引)设为1,循环次数为arr.length-1;
            int insertIndex = i;
            int insertValue = arr[i];
            while (insertIndex > 0 && insertValue < arr[insertIndex-1]){//当要排序的元素比前一个元素大时,进入循环
                arr[insertIndex] = arr[insertIndex-1];//每次arr[i]<arr[i-1],就把arr[i-1]的值往后移,直到arr[i]>arr[i-1]
                insertIndex--;
            }
            arr[insertIndex] = insertValue;
            //insertValue 在比较过程中一直没变,最后一步将insertValue的值赋给insertIndex所指的元素
        }
    }
}

 

                                                                                                         ---end---

                                                                                                    扫描下方二维码

                                                                                            添加好友,备注【交流】

                                                                                可私聊相互学习,共同进步,资源共享

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值