可执行的快排 quicksort
来源:互联网 发布:易视直播网络电视 编辑:程序博客网 时间:2024/05/16 02:15
很早之前就看过快排quicksort,昨天真正想去写,看能不能写出,结果,折腾了很久硬是没写成功,一咬牙,果断看书上的例子,结果坑爹了,理论讲的非常high,代码以执行,啥都没有,上网找了一些,运气差到极点,全是错的,估计都没有验证。
为了节省大家的时间,不要像我一样为了它,折腾个半天,搞得很是恼火,共享一下。
void swap(int &a,int &b){int temp = a;a= b;b = temp;}
partition 函数:
int partition(int a[],int left,int right)/*eg:int a[10] = {1,2,3,4,10,6,7,8,9,0};quicksort(a,0,9); */{int i=left;int j = right+1;//-----1int temp = a[left];while(true){//第一个数 跳过 while(a[++i]<temp && i<right) ; //因为 -----处已经加了1 所以不会少算while(a[--j]>temp) ;if(i>=j)break;swap(a[i],a[j]);}//最后交换 可用swapa[left] = a[j];a[j] = temp;//无论最后一次的比较是i==j 还是i <j //a[j] 都是小于temp 的且a[i] >temp return j;}
递归 快排下去
void quicksort(int a[],int left,int right){if(left <right) //当只有一个数 即 left==right 时 不用排{int mid = partition(a,left,right);quicksort(a,left,mid-1);quicksort(a,mid+1,right);}}主函数测试
int main(){//int a[9] = {1,2,3,4,10,6,7,8,9};int a[20] = {1,2,3,4,10,6,7,8,9,21,25,15,13,42,12,11,32,33,7};quicksort(a,0,sizeof(a)/sizeof(a[0])-1);for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){cout <<a[i] << " ";}cout <<endl;return 0;}
奇数个个数数据测试:
偶数个个数数据
第二个数据测试:
已经测试 边界安全,大家放心使用
- 可执行的快排 quicksort
- lua的快排(QuickSort)
- 快排 quicksort
- 快排算法quickSort
- 快排QuickSort
- 快排QuickSort
- QuickSort/快速排序/快排
- python 版 quicksort 快排
- QuickSort 快排算法 java
- QuickSort快排详细解释
- 快排(QuickSort)的java语言的实现
- QuickSort(经典快排算法)
- C语言递归实现快排quicksort
- java快速排序(快排)算法Quicksort
- 把快排quicksort() 优化到 STL -> sort()
- 快排的疑惑?
- 实现的快排
- 陈泽泽的快排
- nova 命令行
- 《算法导论》读书笔记之第6章 优先级队列
- <input type="text" value="">实现输入提示
- 【Git入门之二】基本术语
- 关于Android3.0以上网络访问的问题解决
- 可执行的快排 quicksort
- 正则表达式——身份证验证
- linux下保留文件系统下剩余指定数目文件的shell脚本
- 面试题:自己写个字符串转int(my_atoi)
- RestEasy入门
- android StrictMode学习android StrictMode学习
- JavaWeb -- Session实例 -- 自动登录 和 防止表单重复提交(令牌产生器) MD5码
- 当你学不进去的时候,试试“普瑞马法则”
- 2013-11-20 第二、三课