快速排序算法(C)
来源:互联网 发布:手机oa软件 编辑:程序博客网 时间:2024/06/10 04:40
sort快排函数的基本版,效率n*logn,快排的完全版就是在递归之中夹杂对序列的预判断,最优的选择排序方法,快速排序算法只是其中之一。
简单的说明一下快速排序的思想,对于一个数列,首先选择一个基数(x),进行第一次排序,把比x 小的放在x左边,大的放右边(默认从小到大)。
例如 : 8 4 5 7 6 9 2 1 3 0, 选择基数8 那么第一次排序的结果是这样的: 0 4 5 7 6 3 2 1 8 9
之后捏,分治一下,以基数为界,左边排一遍,右边排一遍,再用得到的基数为界再排,排到没数为止。
#include<cstdio>#include<cstring>#include<iostream>using namespace std;int integer[100000];int qsort(int s,int e){ int i=s,j=e; int x=integer[i]; // 基准数 int temp; while(i!=j) { while(integer[j]<=x && i<j) { j--; } while(integer[i]>=x && i<j) { i++; } if(i<j) { temp = integer[i]; integer[i]=integer[j]; integer[j]=temp; } } temp=integer[i]; integer[i]=x; integer[s]=temp; return i;}void qsort_f(int s,int e){ if(s>e) return; int pos=qsort(s,e); qsort_f(s,pos-1); qsort_f(pos+1,e);}int main(){ int n; cin>>n; while(n--) { int t; cin>>t; for(int i=0;i<t;i++) { cin>>integer[i]; } qsort_f(0,t-1); for(int j=0;j<t;j++) { cout<<integer[j]<<" "; } cout<<endl; } return 0;}/*108 4 5 7 6 9 2 1 3 0*/
0 0
- 算法 - 快速排序(C#)
- 快速排序算法(C)
- 排序算法(C实现)--------- 快速排序
- C++快速排序算法
- 快速排序算法 C
- C快速排序算法
- C快速排序算法
- 排序算法 - 快速排序(C++)
- QuickSort - 快速排序算法(C++)
- QuickSort - 快速排序算法(C++)
- 快速排序算法(C语言)
- 快速排序算法实现(C++)
- 快速排序算法(C & Java 实现)
- 快速排序算法实现(C版)
- 快速排序算法(C语言实现)
- C#.NET快速排序算法
- 快速排序算法(c#)实现
- 快速排序算法(降序-C++)
- 读书笔记jvm探秘之一:内存概况
- 通过使用Byte Buddy,便捷地创建Java Agent
- 读书笔记jvm探秘之二: 对象创建
- jvm探秘之三:GC初步
- spring入门之ContextLoadListener
- 快速排序算法(C)
- 二叉排序树第一版
- 关于C、内存、栈的一些杂谈
- 斯坦福大学机器学习公开课, 梯度下降算法,随机梯度下降算法,最小二乘拟合法总结以及证明
- 平衡二叉树+树的旋转
- 程序的性能优化之代码上的细节优化
- 一个绝对注意不到的小细节(深入理解计算机系统第五章5.5及5.6)
- 使用C++封装互斥锁的实践
- 剑指offer题目练习一