目前比较成熟的排序算法有选择排序,插入排序,希尔排序,归并排序,快速排序以及堆排序。如下表所示,比较了各个排序算法之间的优劣势。
上述算法的具体实现
选择排序:选择排序具体实现与分析
插入排序:插入排序具体实现与分析
希尔排序:希尔排序具体实现与分析
归并排序:归并排序具体实现与分析
快速排序:快速排序具体实现与分析
堆排序:堆排序具体实现与分析...
分类:
编程语言 时间:
2014-11-16 23:11:38
阅读次数:
377
排序算法总结本博文摘自伍迷老师的《大话数据结构》,想学数据结构的,大大的推荐此书... 事实上,目前还没有十全十美的排序算法,有优点就会有缺点,即使是快速排序法,也只是在整体性能上优越,它也存在排序不稳定、需要大量辅助空间、对少量数据排序无优势等不足。因此我们就来从多个角度来剖析一下提到的各种排序....
分类:
编程语言 时间:
2014-11-15 21:32:52
阅读次数:
221
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2014-11-12 16:26:31
阅读次数:
253
总结5种比较高效常用的排序算法,包括选择排序、插入排序、归并排序、希尔排序、快速排序等。
分类:
编程语言 时间:
2014-11-06 10:29:27
阅读次数:
279
直接插入排序
/*总是将a[i]与a[i+1]作比较,temp记录两者中较小的数
然后对这个数左边遍历将比temp大的数右移,
然后在空出来的位置上插入temp进行排序*/
#include
insert_sort(int a[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
if(a[i] <a[i-1])
{
temp=a[i];...
分类:
编程语言 时间:
2014-11-05 19:45:11
阅读次数:
271
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2014-10-12 16:54:48
阅读次数:
274
在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。即所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,则说这种排序算法是稳定的,反之,就...
分类:
其他好文 时间:
2014-10-09 01:04:37
阅读次数:
203
排序算法总结:排序法平均时间最差情形稳定度额外空间备注冒泡O(n2)O(n2)稳定O(1)n小时较好交换O(n2)O(n2)不稳定O(1)n小时较好选择O(n2)O(n2)不稳定O(1)n小时较好插入O(n2)O(n2)稳定O(1)大部分已排序时较好基数O(logRB)O(logRB)稳定O(n)B...
分类:
其他好文 时间:
2014-10-04 12:56:06
阅读次数:
195
排序算法总结:排序法平均时间最差情形稳定度额外空间备注冒泡O(n2)O(n2)稳定O(1)n小时较好交换O(n2)O(n2)不稳定O(1)n小时较好选择O(n2)O(n2)不稳定O(1)n小时较好插入O(n2)O(n2)稳定O(1)大部分已排序时较好基数O(logRB)O(logRB)稳定O(n)B...
分类:
其他好文 时间:
2014-10-02 17:41:03
阅读次数:
139