Java 直接插入 排序算法 要怎么应用?

Java 直接插入 排序算法 要怎么应用?

我们在开发过程中经常会到这样一类排序问题就是把新的数据插入到已经排好的数据列中。这个时候我们就可能用直接插入排序算法来实现它。

直接插入排序的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

直接插入排序流程如下:

1、首先比较数组的前两个数据,并排序;

2、比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置;

3、比较第四个元素与前三个排好序的数据,并将第四个元素放入适当的位置;

......

4、直至把最后一个元素放入适当的位置。

举例说明:要排序数组:int[] arr = {7, 2, 6, 5, 9, 4};

第1趟后:[2, 7], 6, 5, 9, 4

第2趟后:[2, 6, 7], 5, 9, 4

第3趟后:[2, 5, 6, 7], 9, 4

第4趟后:[2, 5, 6, 7, 9], 4

第5趟后:[2, 4, 5, 6, 7, 9]

算法分析

空间复杂度O(1)

时间复杂度O(n2)

最差情况:反序,需要移动n*(n-1)/2个元素

最好情况:正序,不需要移动元素

数组在已排序或者是“近似排序”时,插入排序效率的最好情况运行时间为O(n);

插入排序最坏情况运行时间和平均情况运行时间都为O(n2)。

通常,插入排序呈现出二次排序算法中的最佳性能。

对于具有较少元素(如n<=15)的列表来说,二次算法十分有效。

代码实现

Java 直接插入 排序算法 要怎么应用?

代码


打完收工,谢谢,大家多多支持。

Java 直接插入 排序算法 要怎么应用?


分享到:


相關文章: