注:基数排序中:r是关键字的基数,d是长度,n是关键字的个数 1.插入排序 基本思想:在序号i之前的元素(0到i-1)已经排好序,本趟需要找到i对应的元素x (此时即arr[i]) 的正确位置k,在寻找位置k的过程中与序号i-1到0的元素依次进行比较。如果x小于比较元素,则比较元素向后移动一位;否则 ...
分类:
编程语言 时间:
2017-12-24 20:08:57
阅读次数:
177
1.单刀直入 基数排序是基于多关键字的一种排序,借助“分配”与“收集”两个过程来得到一个有序序列,其时间复杂度为O(d(n+rd)),空间复杂度为O(n+rd),属于稳定的排序... 举个例子,加入有一下待排序列#->278->109->63->930->589->184->505->269->8- ...
分类:
编程语言 时间:
2017-12-23 16:02:50
阅读次数:
309
首先拍完序一一对应肯定是最优的,但是修改怎么办?我们可以局部考虑一下怎么计算答案,把点离散化一下,然后对于汽车我们看做+1,加油站看做-1,如果某个点的前缀和是0那么肯定匹配上了,否则就不是,那么贡献是什么,就是这个点的前缀和的绝对值乘上这个点和下一个点的距离(离散化以前的),不懂的话自己画图试一下 ...
分类:
其他好文 时间:
2017-12-22 21:46:43
阅读次数:
149
1)插入排序(从第二个元素开始,依次从剩余元素中选择一个,插入到前面有序的子序列中) 2)快速排序(不是稳定的排序,平均时间复杂度O(nlogn)) 3)归并排序(是稳定的排序算法,时间复杂度O(nlogn)) 4)堆排序(不是稳定的排序,时间复杂度O(nlogn)) 5)计数排序、基数排序、桶排序 ...
分类:
编程语言 时间:
2017-12-20 21:54:33
阅读次数:
193
什么是排序稳定性? 通俗地讲就是在排序前A的位置是 i ,B的位置是 j,此时 i < j,则如果在排序后A的位置还是在B之前,那么称它是稳定的。 它的好处是,如果排序算法是稳定的,那么第一个排序结果可以为另一个排序所用。比如基数排序,先按低位排序,逐次按高位排序,低位相同的元素其顺序在高位也相同时 ...
分类:
编程语言 时间:
2017-12-17 23:56:13
阅读次数:
177
七、桶排序(Bucket Sort) 要使桶排序正常运行,需要额外的信息: 输入A1,A2,...,AN必须只由小于M的正整数构成,即Ai<M。使用一个大小为M的数组result,初始化为全0。数组有M个单元,即M个桶(bucket)。 步骤: result[Ai]中存放的是Ai出现的次数; 读入A ...
分类:
编程语言 时间:
2017-12-12 22:10:08
阅读次数:
217
冒泡排序 插入排序 选择排序 希尔排序 归并排序 快速排序 堆排序 计数排序 基数排序 桶排序 O是指计算机执行命令所需的时间 nlogn是算法的时间复杂度,一般排序用的是log2n 总体总结表:这个有个错误就是归并排序需要一个o(n)的辅助数组 冒泡排序 主要思想:外层循环从1到n-1,内循环从当 ...
分类:
编程语言 时间:
2017-12-11 01:03:47
阅读次数:
378
查找方法 : 顺序查找法 二分查找法 1 import time,random 2 3 #时间计算 4 def cal_time(func): 5 def wrapper(*args,**kwargs): 6 time1=time.time() 7 n=func(*args,**kwargs) 8 ...
分类:
编程语言 时间:
2017-11-30 15:03:33
阅读次数:
179