lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

1.题目

 

 

2.解法

 

插入排序的算法思路是这样的:

将数组的第一个元素看作是已排序的序列,从第二个元素开始,依次往已排序的序列中插入。
每次插入时,从已排序的序列的末尾开始比较,

  • 如果待插入的元素小于当前比较的元素,则将当前元素后移一位,
  • 否则将待插入的元素放在当前位置。

重复上述步骤,直到所有的元素都插入到已排序的序列中。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class InsertSort {
    public static void main(String[] args) {
        int[] nums = new int[]{1, 8, 5, 2, 7, 0};
        sortArray(nums);
        System.out.println();
    }
 
    public static void sortArray(int[] nums) {
        int length = nums.length;
 
 
        for (int i = 0; i < length - 1; i++) {
            int preIndex = i;
            int curVal = nums[i + 1];
 
            while (preIndex >= 0 && nums[preIndex] > curVal) {
                nums[preIndex + 1] = nums[preIndex];
                preIndex--;
            }
            nums[preIndex + 1] = curVal;
 
        }
    }
}

  

3.总结

 

插入排序的特点是:

算法简单,易于实现。
稳定性好,不会改变相等元素的相对位置。
时间复杂度为O (n²),空间复杂度为O (1)。
适合数据量较小或基本有序的序列。

posted on   白露~  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示