快速排序(QuickSort)算法
来源:互联网 发布:vsat网络 编辑:程序博客网 时间:2024/04/30 21:09
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
下午做题的时候用到了快速排序(QuickSort),只不过这次换成C语言实现。草草写了一个,感觉很乱,改。。。改完还乱。。。继续改。。。最后结果就是如下这个快速排序(QuickSort)算法的C语言实现。
void qsort(int s[], int l, int r)
{
int i, j, x;
if (l < r)
{
i = l;
j = r;
x = s[i];
while (i < j)
{
while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */
if(i < j) s[i++] = s[j];
while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */
if(i < j) s[j--] = s[i];
}
s[i] = x;
qsort(s, l, i-1); /* 递归调用 */
qsort(s, i+1, r);
}
}
我的这个算法实现是每次从数组头部取数字作为基准,看起来好理解一些,呵呵~我是这么认为的。
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。
分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
快速排序(QuickSort)的最坏时间复杂度应为0(n2),最好时间复杂度为O(nlgn),平均时间复杂度为O(nlgn)。快速排序(QuickSort)在系统内部需要一个栈来实现递归。若每次划分较为均匀,则其递归树的高度为O(lgn),故递归后需栈空间为O(lgn)。最坏情况下,递归树的高度为O(n),所需的栈空间为O(n)。
- 快速排序算法QuickSort
- 快速排序算法QuickSort
- 快速排序(QuickSort)算法
- QuickSort 快速排序算法
- QuickSort算法(快速排序)
- 快速排序(quicksort)算法实现
- Algorithms Quicksort 快速排序算法
- 快速排序(quicksort)算法实现
- 【算法】快速排序法:Quicksort
- 快速排序算法(QuickSort)
- 细说算法-------快速排序QuickSort
- QuickSort 标准快速排序算法
- 算法导论-------快速排序QuickSort
- 算法/排序算法/QuickSort快速排序
- 算法-排序-快速排序(QuickSort)分析
- 排序算法 之 快速排序(quicksort)
- java排序算法_014快速排序(Quicksort)
- 排序算法笔记-快速排序 Quicksort
- [数码] Kindle使用心得(一)[2013-06-08更新]
- Debug和Release有什么区别
- UVC
- linux动态库lib和inlcude 加载方法
- 牛奶可乐经济学
- 快速排序(QuickSort)算法
- 再谈一下Android下SOCKET通讯的编码问题
- 开始CSDN博客
- android桌面显示图标修改
- android学习进展
- 学习管理的技术
- oracle存储过程
- 百度2012实习生校园招聘笔试题
- 设计师要懂的心理学