美文网首页算法
02-插入排序

02-插入排序

作者: 唔哒喂 | 来源:发表于2021-09-02 21:12 被阅读0次

将一个无序数组分为两组
前一组有序,后一组无序
初始:序组中只有一个数据即arr[0];
从第二组(无序)中依次取数据(从arr[1]开始),放入有序组中(保证仍有序)

可以得知有一个循环用来从无序组中取数据nowVal(arr[i])。
还有一个循环用来找该数据nowVal放在有序组的位置。
(将取得的数据与有序组中的数据比较)

假设已经找到这个位置就是j,
如果直接使用 arr[j] = nowVal,那么就丢失了原来j位置存储的数据。

可知在无序数组中选值时,有序数组的长度即可就变成了原长度+1。即i+1。
(i代表无序数组取值的索引值,有序数组长度相当于有序数组最后一位索引值+1)。
那么只需将 j到i-1的数据往后移一位即可。

    public static void SelectSort(int[] array){
        int length = array.length;
        int nowVal;
        //        第一个无序组从1开始
        for (int i = 1; i < length; i++) {
            nowVal = array[i];
            for (int j = 0; j < i; j++) {
//                这里是从小到大
//                找到nowVal应该对应的新index 此处即为j
                if (array[j] > array[i]){
//                    从j到i-1 所有往后移一位
                    int n = i;
                    while(n > j) {
                        array[n] = array[--n];
                    }
                    array[j] = nowVal;
                    break;
                }
            }
        }

    }

相关文章

  • 02-插入排序

    将一个无序数组分为两组前一组有序,后一组无序初始:序组中只有一个数据即arr[0];从第二组(无序)中依次取数据(...

  • 02-插入排序(完成)

    插入排序—— 稳点!!! 动态图: 一、概念:   原理:如果数组进行循环得到a,若a比a前面的一个数小(大),则...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • java快速学习排序---插入排序

    1.java实现插入排序 (1)、图解插入排序 (2)、插入排序的思想 (3)、插入排序的代码实现

  • c算法O(n)^2(一)

    选择排序 插入排序 优化插入排序算法

  • 一遍文章搞定插入排序-java版

    插入排序 1.1 插入排序的基本介绍 插入排序属于内排,就是以插入的方式来达到排序的目的 1.2 插入排序思想 将...

  • leetcode的题目147

    147. 对链表进行插入排序 对链表进行插入排序。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有...

  • 算法(排序)

    一、内部排序 1、插入排序—直接插入排序(Straight Insertion Sort) 2、插入排序—希尔排序...

  • 力扣(LeetCode) -147 对链表进行插入排序

    本题考察的插入排序和链表操作 题目描述 对链表进行插入排序。 插入排序算法:插入排序是迭代的,每次只移动一个元素,...

  • #02-事件的产生与传递#

    02-事件的产生与传递

网友评论

    本文标题:02-插入排序

    本文链接:https://www.haomeiwen.com/subject/ijbcwltx.html