美文网首页Java排序算法
Java排序算法 - 直接插入排序

Java排序算法 - 直接插入排序

作者: 守敬 | 来源:发表于2018-03-19 17:43 被阅读0次

直接插入算法

顾名思义,就是在有序数组中适当的位置插入元素。

算法思路:把待排序的数组,第0位的元素看做是一个排好序的数组,之后用temp记录数组的第1位,与前面的元素依次进行比较,如果小于前面的元素,那么就将前面的元素赋值给后边的元素,直到temp小于前面的某一个元素位置,将temp赋值给该位置。之后重复操作,将所有元素插入到适合的位置。

图解

这是一个待排序的数组。


待排序数组.png

发现23比28小,需要将23插入到前面适当的地方。


待排序.png

用temp记下23这个值,避免了交换元素浪费时间,这样直接赋值就好。将28赋值到23的位置。之后蓝色标志位向前移动,比较26与temp的大小。


待排序.png

结果发现26也大于23,将26向后一位赋值。蓝色标前移。

待排序.png

比较发现20小于23,所以temp就应该插在20的后面。


完成.png

之后红色标识后移一位,蓝色标志移动到红色前一位,temp = 28,重复操作。


下一轮.png

完整代码如下:

/**
 * Created by ShouJingGuo on 2018/3/14.
 * 直接插入排序
 */
public class InsertSort {
    public static <T> void insertSort(T[] arr, Comparator<T> comparator){
        for(int i = 1; i < arr.length; i++){
            T temp = arr[i];
            int j = i - 1;
            while((j >= 0) && (comparator.compare(arr[j], temp) > 0)){
                arr[j+1] = arr[j];
                j--;
            }
            arr[j+1] = temp;
        }
    }

    public static void main(String[] args) {
        Integer arr[] = {10,50,24,11,68,20,41,0,24,25,4,7,94,15,5,44,66};
        InsertSort.insertSort(arr, new IntegerComparator());
        System.out.println(Arrays.toString(arr));
    }
}

相关文章

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • java 实现排序算法之「插入排序」

    java 实现排序算法系列 这是 Java 实现排序算法的第三篇文章——插入排序算法。插入排序可以说成是「一类」简...

  • 排序算法(一)直接插入排序算法

    排序算法(一)直接插入排序算法 1.基本概念  直接插入排序(Straight-Insertion-Sort)是一...

  • 排序

    本文记录几个基础的排序算法。排序算法分为插入排序、交换排序、选择排序等几大类。 插入排序 1. 直接插入排序 O(...

  • 排序——插入排序

    业精于勤荒于嬉 插入排序包括:直接插入排序、折半插入排序、希尔排序(缩小增量排序) 一、直接插入排序 1. 算法思...

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

  • 熟记代码片段

    1.转自 一遍记住Java常用的八种排序算法与代码实现 直接插入排序:

  • 经典排序算法-希尔排序Shell sort

    一、希尔排序思想 希尔排序是基于插入排序的快速的排序算法,先分组后对每组进行直接插入排序,再分组再直接执行插入排序...

  • 【数据结构】【C#】013-插入类排序:🥇直接插入排序(稳定)

    插入排序:直接插入排序(稳定) 【 算法思想 】 直接插入排序是一种最基本的插入排序方法,其基本操作是将第 i 个...

  • Java学习记录(常用 算法 排序 )

    排序算法的分类如下: 1.插入排序(直接插入排序、折半插入排序、希尔排序);2.交换排序(冒泡泡排序、快速排序);...

网友评论

    本文标题:Java排序算法 - 直接插入排序

    本文链接:https://www.haomeiwen.com/subject/zslyqftx.html