插入排序

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

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

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]
            
        }

 

 

posted @ 2020-07-03 12:36  你的胖子  阅读(146)  评论(0编辑  收藏  举报