八种基本排序问题 (第三篇 插入排序)

一.插入排序的描述

       插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。 按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序 。   

 就像打扑克一样 ,手中的牌是有顺序的,后加入的插入到对应的位置    

二.思路

  把待排序的元素看为两部分  开始时前部分只有一个元素 ,这是有序的,下一次加入一个时,判断它的位置 ,然后插入  ,知道后半部分元素全部插入到有序的部分就结束;

相当于把数组前部分为一个元素  ,逐个加入,加入时并排序

 

三.代码实现


    
    
  1. package c06Sort;
  2. import java.util.Arrays;
  3. public class InsertSort {
  4. public static void main (String[] args) {
  5. int arr[] = { 33, 5, 2, 9, 1, 3,- 1, 43, 98, 45, 7};
  6. System.out.println( "排序前的数组");
  7. System.out.println(Arrays.toString(arr));
  8. insertSort(arr);
  9. System.out.println( "排序后的数组");
  10. System.out.println(Arrays.toString(arr));
  11. }
  12. public static void insertSort (int []arr) {
  13. //从第二个数开始,,第一个已经独立有序了
  14. int insertVal = 0; //取出下一个要插入的数据 ,保存下来
  15. int insertIndex = 0 ; // 要插入的下标
  16. for( int i= 1;i<arr.length;i++) {
  17. insertVal=arr[i];
  18. insertIndex=i- 1; //待插入的数 前一个位置
  19. //给待插入的数找位置;
  20. while(insertIndex >= 0 && insertVal < arr[insertIndex]) {
  21. //如果前一个位置是要插入的 向后移;
  22. arr[insertIndex+ 1]=arr[insertIndex];
  23. insertIndex--;
  24. }
  25. //这是表示找到了位置 是要插入的前一个 插入时要加1;;
  26. arr[insertIndex+ 1]=insertVal; //插入数
  27. }
  28. }
  29. }

四.结果

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树leetcode-排序算法493-翻转对 20361 人正在系统学习中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值