首页 > 编程语言 > 详细

插入排序

时间:2020-07-03 13:59:48      阅读:46      评论:0      收藏:0      [点我收藏+]

将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)

视为有两个集合,第一个集合只有一个元素,第二个集合是无序的,将无序集合中的元素一个一个插入第一个集合中,使其逐渐变得有序,当第二个集合移动到最后一个元素时,第一个集合变成有序集合,产生排序效果。

package com.pangzi.stucture;

import java.util.Arrays;

public class InsertSort {

    public static void main(String[] args) {
        
        int[] arr = {101,34,119,1};
        insertSort(arr);
    }

    //插入排序
    public static void insertSort(int[] arr){
        //使用for循环
        for(int i = 1;i< arr.length;i++){
            int insertVal = arr[i];//从数组的第二个元素开始,与第一个有序元素进行比较
            int insertIndex = i-1;//即arr[1]前面这个数的索引下标
            
            while(insertIndex >= 0 && insertVal < arr[insertIndex]){//判断索引不越界,且插入的元素小于插入元素左边的元素
                arr[insertIndex + 1] = arr[insertIndex];//将第一个元素向右移动1位,将arr[0]赋值给arr[1]
                insertIndex--;//将arr[0]的索引减一,这时候insertIndex为-1
            }
            
             arr[insertIndex + 1] = insertVal;//将待插入元素赋值给arr[-1+1],即arr[0]
            
        }

 

技术分享图片

 

插入排序

原文:https://www.cnblogs.com/xiaoboxueit/p/13229737.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!