希尔算法: 先对列表分组,再对每组元素分别做插入排序。 元素分组是通过设置步长(gap,即组的数量)实现的。每一组元素内,相邻元素之间的距离(步长)固定。 插入排序与冒泡排序时间复杂度相同(O(n^2)),但执行速度快,是因为需要执行的代码行数少(寻找到插入位置前,插入排序每次判断仅移动一个元素,冒 ...
分类:
编程语言 时间:
2020-06-16 15:32:04
阅读次数:
59
在程序中出加入计数器来计算两者在执行过程中需要的插入次数 通过比较时间复杂度来比较效率 int shell(int a[],int n,int gap) { int count=0; int key=a[n]; while(n>=gap&&a[n-gap]>key) { a[n]=a[n-gap]; ...
分类:
编程语言 时间:
2020-06-16 00:57:10
阅读次数:
56
题目:各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。基本要求:(1) 从以下常用的内部排序算法至少选取5种进行比较:直接插入排序;折半折入排序;希尔排序;起泡排序;快速排序;简单选择排序;堆排 ...
分类:
编程语言 时间:
2020-06-15 22:34:29
阅读次数:
61
主要介绍关于插入排序、冒泡排序、快速排序、二分归并排序等几种排序算法。 1.插入排序 2.冒泡排序 3.快速排序 4.二分归并排序 首先是几大算法的效率: 1.插入排序: 插入排序:以下图为例,下一个预备插入的为2,首先和前一个7进行对比,7>2,所以7向后挪动,2再和6进行比较,6向后挪动...依 ...
分类:
编程语言 时间:
2020-06-15 22:29:53
阅读次数:
70
希尔排序和插入排序很类似; 你可以看一下我上一个博客写的插入排序,这两个很类似,我的这个希尔排序也是根据插入排序改编而成 如果你看过希尔排序的概念以后仍然不是很懂是如何实现的,很建议你看一下哔哩哔哩里一个关于希尔排序改编的舞蹈 你反复看几遍绝对会在脑海里形成很强烈的印象,因为实在是太魔性了 苏格兰改 ...
分类:
编程语言 时间:
2020-06-13 23:21:55
阅读次数:
73
实际开发中移动端能够遇到的算法,十之八九那就是排序算法了~ ,碰巧刚刚利用插入排序算法解决了一个bug,故此记录一笔 场景1: 起始下标大于结束下标的插入 场景2: 起始下标小于结束下标的插入 ... id startObj = tempArr[startIndex]; ///MARK:- 此处是简 ...
分类:
移动开发 时间:
2020-06-13 17:40:38
阅读次数:
73
前言 来了来了,50道Java集合面试题也来啦~ 已经上传github: https://github.com/whx123/JavaHome 1. Arraylist与LinkedList区别 可以从它们的底层数据结构、效率、开销进行阐述哈 ArrayList是数组的数据结构,LinkedList ...
分类:
编程语言 时间:
2020-06-13 00:45:58
阅读次数:
62
时间久了,有些遗忘,回顾记录一下: 快速排序: 顾名思义,对于c++,快速排序历史上一直是实践中已知最快的泛型排序算法,平均运行时间:O(n*logn),最差就是O(n^2)。 STL中的sort用的就是快排,只不过根据数据量级穿插了别的如插入排序,堆排等算法,进行动态调整,使性能达到最优解。一般来 ...
分类:
其他好文 时间:
2020-06-12 14:55:40
阅读次数:
58
// 插入排序 const insertSort =(arr) => { //假设前面的元素有序,把后一个元素插入合适的位置 for (var i = 1;i<arr.length;i++){ var preIdx = i-1 var currentVal = arr[i] while(preIdx ...
分类:
编程语言 时间:
2020-06-11 19:48:53
阅读次数:
52
1. 插入排序 插入排序:插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序;首先将第一个作为已经排好序的,然后每次从后的取出插入到前面并排序; 时间复杂度:O(n²) 空间复杂度:O(1) 稳定性:稳定 def insert ...
分类:
编程语言 时间:
2020-06-09 16:17:18
阅读次数:
53