首页 > 编程语言 > 详细

插入排序

时间:2019-12-29 12:49:32      阅读:87      评论:0      收藏:0      [点我收藏+]

插入排序属于稳定排序,他的时间复杂度为O(n^2)

思路和过程:把n个待排序的元素分为有序表和无序表,开始前有序表只有一个元素即n个元素的中的第一个,无序表中有n-1个元素,开始排序时从无序表中取出当前第一个元素,和有序表中相比较,将他插入到合适位置,当无序表中的元素提取完,排序即可完成

优化:当有的数字已经在他的正确位置时,我们在进行赋值就会影响速度,所以我们只有在他需要进行移动时赋值即可

import java.lang.reflect.Array;
import java.util.Arrays;

public class InsertSort {

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

    public static void insertSort(int[] arr) {
        int insertVal = 0;
        int insertIndex = 0;
        for (int i = 1; i < arr.length; i++) {
            insertVal = arr[i];
            insertIndex = i - 1;
            while (insertIndex >= 0 && insertVal < arr[insertIndex]) {
                arr[insertIndex + 1] = arr[insertIndex];
                insertIndex--;
            }
            //优化
            if (insertIndex + 1 != i) {
                arr[insertIndex + 1] = insertVal;
            }
        }
    }
}    

插入排序

原文:https://www.cnblogs.com/bingbug/p/12114508.html

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