希尔排序对于多达几千个数据项的,中等大小规模的数组排序表现良好,希尔排序不像快速排序和其它时间复杂度为O(n*logn)的排序算法那么快,因此,对非常大的文件排序,它不是最优选择,但是希尔排序比选择排序和插入排序这种时间复杂度为O(n²)的排序要快的多,并且它非常容易实现,代码简短 希尔排序也...
分类:
其他好文 时间:
2014-07-12 13:06:10
阅读次数:
190
冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 1 pa...
分类:
其他好文 时间:
2014-07-11 18:16:27
阅读次数:
141
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
其他好文 时间:
2014-07-11 12:21:44
阅读次数:
217
今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不...
分类:
其他好文 时间:
2014-07-11 10:34:18
阅读次数:
163
题目:编写一个函数,它用于对一个任何类型的数组进行排序。算法核心代码sort函数实现/**功能说明:sort函数可以对不同类型的数据进行排序参数:1、一个指向需要排序的数组的第一个值的指针。2、数组中元素的个数。 3、每个数组元素的长度。4、一个指向比较回调函数的指针 **/void sort(vo...
分类:
其他好文 时间:
2014-07-11 10:06:10
阅读次数:
163
本文由 伯乐在线 - smilesisi 翻译自 Kanasz Robert。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。 在这篇文章中,我会向大家展示一些排序算法的可视化过程。我还写了一个工具,大家可对比查看某两种排序算法。下载源码 – 75.7 KB下载示例 – 27.1 KB引言 ...
分类:
其他好文 时间:
2014-07-09 15:08:15
阅读次数:
313
STL算法之排序算法STL排序算法通常复杂度坏于线性,且必须要random-access Iterators。所以,forward_list, list, associative and unordered contains 不提供随机访问迭代器,这些容器不能用排序算法。但是,forward_lis...
分类:
其他好文 时间:
2014-07-08 22:34:18
阅读次数:
226
题目:有两个有序数组a,b,现需要将其合并成一个新的有序数组。
简单的思路就是先放到一个新的数组中,再排序。但是这样的没体现任何算法,这里考的不是快速排序等排序算法。关键应该是如何利用有序已知这个条件。可以这样想,假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了。
public class MergeTw...
分类:
其他好文 时间:
2014-07-08 16:54:20
阅读次数:
161
一、插入排序
直接插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
代码实现:...
分类:
其他好文 时间:
2014-07-08 14:55:41
阅读次数:
232
之前我们介绍了几种O(nlgn)的排序算法:快速排序、合并排序和堆排序,本节我们介绍基于比较的排序算法的下界以及几个线性时间的排序算法——计数排序、基数排序、桶排序。...
分类:
其他好文 时间:
2014-07-08 14:10:28
阅读次数:
243