对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为theta(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好,期望时间复杂度是theta(nlgn),而且常数因子非常小,并可进行原址排序。1. 快速排序的描述快速排序可...
分类:
其他好文 时间:
2014-08-24 22:00:13
阅读次数:
255
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较。
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。
步骤为:
从数列中挑出一个元素,称为 "基准"(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元...
分类:
编程语言 时间:
2014-08-23 23:03:11
阅读次数:
485
排序常用的算法有:插入算法(直接插入算法、折半插入算法、希尔算法)、选择算法(简单选择算法、堆排序算法)、快速算法(冒泡排序、快速排序算法)以下程序给出了各种算法的实现,其接口为voidsort(int*array,intlen),每个文件实现一个算法,最后和main.c文件编译实现。1、直..
分类:
其他好文 时间:
2014-08-22 18:12:10
阅读次数:
273
快速排序是排序算法中最受青睐的算法之一,相对于堆排序和归并排序而言,即便具有相同的复杂度O(NlogN)。面对大数据而言,快排的效率也更高。一般而言,数据结构中的排序算法都是采取的双向指针法。在之前写的一篇博文《排序算法(初级版)之快排、归并、堆排序》中已经有过总结。这里就不再啰嗦了。本篇博文主要讲...
分类:
其他好文 时间:
2014-08-22 17:48:39
阅读次数:
388
1.基本概念2.时空复杂度3.稳定性4.使用情况分析排序算法总结(C语言版)已介绍排序算法的基本思想和C语言实现,本文只介绍时空复杂度和稳定性。1.基本概念时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法的语句执行次数称为语句频度或时间...
分类:
其他好文 时间:
2014-08-22 12:25:26
阅读次数:
231
归并排序:将两个已经排序的串行合并成一个串行的操作。
算法描述如下:
申请空间,使其大小为两个已经排序串行之和,该空间用来存放合并后的串行;设定两个指针,最初位置分别为两个已经排序串行的起始位置;比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;重复步骤3直到某一指针到达串行尾将另一串行剩下的所有元素直接复制到合并串行尾...
分类:
编程语言 时间:
2014-08-21 22:49:05
阅读次数:
292
一.冒泡排序 c#(两个相邻的数依次比较大小) 返回结果:2,13,27,38,48,49,49,65,76,92,97 int[] array = { 49, 38, 65, 97, 76, 13, 27,2,48,92 ,49}; public int[] bubbleS...
分类:
其他好文 时间:
2014-08-21 18:38:24
阅读次数:
263