国际数据公司,免费网站排名优化,强大的wordpress主题,提高工作效率的方法不正确的是插入排序
核心#xff1a;通过构建有序序列#xff0c;对于未排序序列#xff0c;在已排序序列中从后向前扫描(对于单向链表则只能从前往后遍历)#xff0c;找到相应位置并插入。实现上通常使用in-place排序(需用到O(1)的额外空间)
从第一个元素开始#xff0c;该元素可…插入排序
核心通过构建有序序列对于未排序序列在已排序序列中从后向前扫描(对于单向链表则只能从前往后遍历)找到相应位置并插入。实现上通常使用in-place排序(需用到O(1)的额外空间)
从第一个元素开始该元素可认为已排序取下一个元素对已排序数组从后往前扫描若从排序数组中取出的元素大于新元素则移至下一位置重复步骤3直至找到已排序元素小于或等于新元素的位置插入新元素至该位置重复2~5 public class InsertionSort {public static void main(String[] args) {int unsortedArray[] new int[]{6, 5, 3, 1, 8, 7, 2, 4};insertionSort(unsortedArray);System.out.println(After sort: );for (int item : unsortedArray) {System.out.print(item );}}public static void insertionSort(int[] array) {int len array.length;for (int i 0; i len; i) {int index i, array_i array[i];while (index 0 array[index - 1] array_i) {array[index] array[index - 1];index - 1;}array[index] array_i;/* print sort process */for (int item : array) {System.out.print(item );}System.out.println();}}
}输出
6 5 3 1 8 7 2 4
5 6 3 1 8 7 2 4
3 5 6 1 8 7 2 4
1 3 5 6 8 7 2 4
1 3 5 6 8 7 2 4
1 3 5 6 7 8 2 4
1 2 3 5 6 7 8 4
1 2 3 4 5 6 7 8
After sort:
1 2 3 4 5 6 7 8希尔排序
核心基于插入排序使数组中任意间隔为h的元素都是有序的即将全部元素分为h个区域使用插入排序。其实现可类似于插入排序但使用不同增量。更高效的原因是它权衡了子数组的规模和有序性。
推荐大佬文章排序算法 —— 希尔排序图文超详细
从网上搞了一个动图 (图网侵删)