博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java直接插入排序
阅读量:5330 次
发布时间:2019-06-14

本文共 1919 字,大约阅读时间需要 6 分钟。

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤

1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列

2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

算法图示

insert-sort.gif

算法基本性能

排序方法 平均时间复杂度情况 最好情况 最坏情况 空间复杂度 稳定性
插入排序 O(n2) O(n) O(n2) O(1) 稳定

Java代码

package com.sort;import java.util.Random;public class Main {    // 从小到大    private static void sort(int[] array) {        if (array.length <= 1) {            return;        }        for (int i = 1; i < array.length; i++) {            /**             * 因为0~i-1为有序的,如果i位置的大于i-1位置的,说明0~i也是有序的,             * 反之需要在0~i-1直接找出i位置的元素的正确位置插入             */            if (array[i] < array[i - 1]) {                /**                 * 先保存i位置元素                 */                int temp = array[i];                int j = i - 1;                /**                 * 从i-1开始向前查找,一直到找到比i位置元素小的位置,然后插入                 */                for (; j >= 0 && array[j] > temp; j--) {                    /**                     * 没有找到,那么将此位置的元素后移一位,腾出位置                     */                    array[j + 1] = array[j];                }                /**                 * 将i位置元素放在腾出的位置上面                 */                array[j + 1] = temp;            }        }    }    /**     * 获取指定长度的随机数组     */    public static int[] getRandomArray(int n) {        int[] array = new int[n];        Random random = new Random();        for (int i = 0; i < array.length; i++) {            array[i] = random.nextInt(500);        }        return array;    }    /**     * 打印指定数组     */    public static void outputArray(int[] array) {        for (int i : array) {            System.out.print(i + " ");        }        System.out.println("");    }    public static void main(String[] args) {        int[] array = getRandomArray(10);        outputArray(array);        sort(array);        outputArray(array);    }}

转载于:https://www.cnblogs.com/alias-blog/p/5786570.html

你可能感兴趣的文章
HNOI2018
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
省市县,循环组装,整合大数组
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>
like tp
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
spring-使用MyEcilpse创建demo
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Maven之setting.xml配置文件详解
查看>>