排序-插入排序InsertSort

一、排序原理

排序-插入排序InsertSort
二、代码实现

package sort;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 排序原理:
 * 1.把所有的元素分为两组,已经排序的和未排序的;
 * 2.找到未排序的组中的第一个元素 ,向已经排序的组中进行插入;
 * 3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个
 * 位置,其他的元素向后移动一位;
 */
public class InsertSort {
    /*
        对数组a中的元素进行排序
    */
    public static void sort(int[] arr){
        //未排序元素
        for (int i = 1 ;i <=arr.length-1;i++){
            //从未排序的第一个元素开始,逆序向前比较
            for (int j = i;j>=0;j--){
                //比较j和j-1处的值,如果后面值比前面的值小则交换数据,且要保证当j>0,防止j--出现负数
                if (j>0 && arr[j]<arr[j-1]){
                    int temp;
                    temp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = temp;
                }else {
                    break;
                }

            }
            System.out.println("第"+i+"次排序:"+Arrays.toString(arr));
        }
    }


    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入所要排序的数组长度:");
        int n = scanner.nextInt();
        //创建长度为n的数组
        int[] arr  = new int[n];

        获取待排序的数组
        System.out.println("请输入冒泡排序前的数组(enter键结束):");

        //将每次键入的值,依次存入arr数组
        for (int i = 0 ;i<arr.length;i++){
            arr[i] = scanner.nextInt();
        }
        System.out.println("原始数据:"+Arrays.toString(arr));

        System.out.println("开始排序...");
        //开始排序
        sort(arr);
        //打印排序后的数组a
        System.out.println("排序成功!!!");
        System.out.println("选择排序后的数据:"+Arrays.toString(arr));

    }
}

截图
排序-插入排序InsertSort

上一篇:Disruptor 全解析(5):为什么它这么快 (一) - Locks Are Bad


下一篇:golang 插入排序