美文网首页
Java 实现插入排序

Java 实现插入排序

作者: 又语 | 来源:发表于2020-04-12 18:20 被阅读0次

本文介绍插入排序原理及 Java 语言实现。


目录

  • 插入排序原理
  • 代码实现
    • 版本一
    • 版本二
    • 单元测试

插入排序原理

  1. 从第一个元素开始,该元素可以认为已经被排序;
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  3. 升序时如果该元素(已排序)大于新元素,将该元素移到下一位置,降序时如果该元素(已排序)小于新元素,将该元素移到下一位置;
  4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置;
  5. 将新元素插入到该位置;
  6. 重复步骤 2 ~ 5。

代码实现

版本一
package tutorial.java.util;

public class InsertionSortUtils {

    public static <T extends Comparable> void sort(T[] array, SortType sortType) {
        int comparableValue = sortType == SortType.ASC ? 1 : -1;
        for (int i = 0; i < array.length; i++) {
            T t = array[i];
            int j = i - 1;
            while (j >= 0 && array[j].compareTo(t) == comparableValue) {
                array[j + 1] = array[j];
                j--;
            }
            array[j + 1] = t;
        }
    }

    public static enum SortType {
        ASC, DESC;
    }
}
版本二
package tutorial.java.util;

public class InsertionSortUtils {

    public static <T extends Comparable> void sort(T[] array, SortType sortType) {
        int comparableValue = sortType == SortType.ASC ? 1 : -1;
        for (int i = 0; i < array.length; i++) {
            T t = array[i];
            int j = i - 1;
            for (; j >= 0 && array[j].compareTo(t) == comparableValue; j--) {
                array[j + 1] = array[j];
            }
            array[j + 1] = t;
        }
    }

    public static enum SortType {
        ASC, DESC;
    }
}
单元测试
package tutorial.java.util;

import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;

public class InsertionSortUtilsTest {

    @Test
    public void test() {
        Integer[] data = {10, 5, 1, 20, 3, 8, 99, 0, 16, 5};
        InsertionSortUtils.sort(data, InsertionSortUtils.SortType.ASC);
        Assert.assertEquals("0,1,3,5,5,8,10,16,20,99", StringUtils.join(data, ","));
        InsertionSortUtils.sort(data, InsertionSortUtils.SortType.DESC);
        Assert.assertEquals("99,20,16,10,8,5,5,3,1,0", StringUtils.join(data, ","));
    }
}

相关文章

  • java快速学习排序---插入排序

    1.java实现插入排序 (1)、图解插入排序 (2)、插入排序的思想 (3)、插入排序的代码实现

  • 数据结构&算法(一)

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

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

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

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

  • (306)排序-java实现的选择/插入/希尔排序

    引言 用java实现的选择排序、插入排序、希尔排序。 代码(java) 运行结果

  • Java 实现插入排序

    本文介绍插入排序原理及 Java 语言实现。 目录 插入排序原理 代码实现版本一版本二单元测试 插入排序原理 从第...

  • 插入排序java实现

    //插入排序//基本思想://在要排序的一组数中,假定前n-1个数已经排好序,//现在将第n个数插到前面的有序数列...

  • Java 实现插入排序

    public class InsertSortNumber { public static void main(S...

  • Java实现插入排序

    插入排序(Insertion Sort),是一种简单直观并且稳定的排序算法。 从前到后取每个元素和之后的元素进行比...

  • 插入排序java实现

    插入排序,就是将数组中的一个个元素插入到已经排好序的数组中. 代码实现: 上面那个是我自己写的,和书上写的还是有一...

网友评论

      本文标题:Java 实现插入排序

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