直接插入排序(java版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33824312/article/details/77856329

直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。

                   – 《大话数据结构》
                  

package com.zhangyike.insertSort;

import java.util.Arrays;
import java.util.Random;

/**
 * 插入排序法
 */
public class InsertSort {
    public static void main(String[] args) {
        int count = 10;
        int n[] = new int[count];
        Random rd = new Random();

        for (int i = 0; i < n.length; i++) {
            n[i] = rd.nextInt(count);
        }

        System.out.println("排序前:" + Arrays.toString(n));
        insertSort(n);
        System.out.println("排序后:" + Arrays.toString(n));
    }

    private static void insertSort(int[] n) {
        for (int i = 1; i < n.length; i++) {
            int key = n[i];
            int position = i;

            //postion之前是一个有序序列,当position位置的值小于他前面的值的时候,去position前面找最后一个大于position的值
            //注意:这块一定是key作比较,而不是n[position]
            while(position > 0 && key < n[position-1]){
                n[position] = n[position-1];//大于key的值依次向后移动。
                position--;
                //将key放在合适的位置上
                n[position] = key;
            }

        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_33824312/article/details/77856329