lotus

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

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.题目

 

 

2.解法

 

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

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

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

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

 

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 2023-04-06 16:29  白露~  阅读(17)  评论(0编辑  收藏  举报