希尔排序 # 希尔排序 # 希尔排序是对插入排序的升级改造 # 它的大致流程是 # 1、将长度为n的序列 分为d = n//2组 # 2、使每一组变的有序 # 3、将序列分为 d1 = d // 2 组 # 4、将每一组变的有序 # 5、直到最后 d 小于等于 0 def inster_sort_g ...
分类:
编程语言 时间:
2019-12-01 14:07:24
阅读次数:
89
原创:微信公众号 帅地 "苦逼的码农" 说明 十大排序算法 可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的 算法思想描述 ,为了方便大家理解,我还找来了 动图演示 ;这还不够,我还附上了对应的 优质文章。 术语铺垫 ...
分类:
编程语言 时间:
2019-11-22 23:39:30
阅读次数:
70
一、桶排序算法的引入。 之前我们已经说过了计数排序的算法。 这个时候我们如果有这样的一个待排序数据序列: int x[14]={-10, 2, 3, 7, 20, 23, 25, 40, 41, 43,60, 80, 90, 100}; 我们如果按照计数排序的算法,那么待排序数据的范围是:-10 到 ...
分类:
编程语言 时间:
2019-11-19 00:54:33
阅读次数:
72
冒泡排序细节的讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 选择排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 插入排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 剖析递归行为和递归行为时间复杂度的估算一个递归行为的例子maste ...
分类:
其他好文 时间:
2019-11-18 18:27:24
阅读次数:
57
排序算法系列博客: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序 基数排序 九大排序排序是数据结构体系中最重要的内容之一,这一块必须要非常熟练的掌握,应该做到可以立马写出每个排序的代码,有多种实现方法的必须多种都能很快写出来,当然对各个排序的性能的了解也是基础 ...
分类:
编程语言 时间:
2019-11-04 20:12:41
阅读次数:
133
稳定 冒泡排序 冒泡排序是不断比较相邻两个元素,并不断交换,最后把大的放到数组后面。第一趟遍历会把最大的元素放到(n-1)位置,第二趟遍历会把第二大的元素放到(n-2)的位置,以此类推。 最好的情况是当数组有序,跑一次内存循环(时间复杂度为O(N))后,因为isSorted为true,外层循环直接退 ...
分类:
编程语言 时间:
2019-10-29 23:43:23
阅读次数:
95
算法思想:计数排序,建立一个辅助数组,遍历数组a,有一个数就把辅助数组相应位置元素+1,最后遍历一遍数组,找到出现最多的主元素 代码: ...
分类:
编程语言 时间:
2019-10-20 16:23:05
阅读次数:
98
虽然是简单题,但是花费了自己不少时间!! 1、想用计数排序,结果还写错了,真的难受!!,最后还是用的vector的自动排序指令,sort,刚开始自己忘了!! 2、思路 排序:排序的是遍历的前提 从最右边的数遍历,三个连续的,最小的加第二小大于最大的就返回值,否则,最右边的数向左边移一位,不要再犯程序 ...
分类:
其他好文 时间:
2019-10-14 19:55:19
阅读次数:
101
第一种方法: 计数排序后,然后找出两两之间的最大差值 计数排序的时间复杂度是O(N) 第二种方法: 1 使用桶的思想,设置N+1个桶,必然有一个空桶,那么就排除了最大差值在一个桶内,因为空桶两侧的差距肯定大于桶内的差距 2 但是最大差值不一定就是空桶左侧max和空桶右侧min,需要依次遍历求差值 ...
分类:
编程语言 时间:
2019-10-05 18:50:36
阅读次数:
135
这三种排序算法不是基于比较的排序。时间复杂度O(N),额外空间复杂度O(N),稳定的 基于桶,一种数据出现的频率,一个萝卜一个坑,先扔入桶中,在按照桶的大小倒出元素。 非基于比较的排序 n个数,准备n+1个桶。 最小值a和最大值b,最小值放在a号桶中,最大值放在b桶中。每个桶的范围(b-a)/(n+ ...
分类:
编程语言 时间:
2019-10-03 22:00:21
阅读次数:
104