快速排序qsort
发布日期:2021-06-29 11:14:02 浏览次数:3 分类:技术文章

本文共 828 字,大约阅读时间需要 2 分钟。

快速排序

排序在各种场合经常被用到。

快速排序是十分常用的高效率的算法。
其思想是:先选一个“标尺”,
用它把整个队列过一遍筛子,
以保证:其左边的元素都不大于它,其右边的元素都不小于它。
这样,排序问题就被分割为两个子区间。
再分别对子区间进行上诉操作就可以了。(递归)

#include 
void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t;}int partition(int a[], int p, int r) { int i = p;//开始 int j = r + 1;//结束 int x = a[p]; while (1) { while (i < r && a[++i] < x); while (a[--j] > x); if (i >= j) break; swap(a, i, j); } swap(a, p, j); return j;}void quicksort(int a[], int p, int r) { if (p < r) { int q = partition(a, p, r); quicksort(a, p, q - 1); quicksort(a, q + 1, r); }}int main() { int i; int a[] = {
3, 5, 13, 6, 24, 2, 8, 19, 27, 6, 12, 1, 17}; int N = 13; quicksort(a, 0, N-1); for (i = 0; i < N; i++) printf("%d ", a[i]); printf("\n"); return 0;}

转载地址:https://blog.csdn.net/ZWHSOUL/article/details/79656145 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:nyoj42一笔画问题欧拉图
下一篇:linux常用命令

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月07日 15时34分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章