快速排序
来源:互联网 发布:windows韩文版 编辑:程序博客网 时间:2024/05/24 04:58
代码如下:
void qsort(int* a,int n){if(n<=1){return;}int i=1,j=n-1;int temp;while(i<=j){while(a[i]<=a[0] && i<=n-1)i++;while(a[j]>=a[0] && j>=1)j--;if(i<=n-1 && j>=1 && i<j ){temp=a[i];a[i]=a[j];a[j]=temp;}}if(i>1){temp=a[0];a[0]=a[i-1];a[i-1]=temp;qsort(a,i-1);}qsort(a+i,n-i);}
完整代码:
#include <iostream>#include <cassert>using namespace std;void qsort(int* a,int n){if(n<=1){return;}int i=1,j=n-1;int temp;while(i<=j){while(a[i]<=a[0] && i<=n-1)i++;while(a[j]>=a[0] && j>=1)j--;if(i<=n-1 && j>=1 && i<j ){temp=a[i];a[i]=a[j];a[j]=temp;}}if(i>1){temp=a[0];a[0]=a[i-1];a[i-1]=temp;qsort(a,i-1);}qsort(a+i,n-i);}void produce(int *a,int n){assert(RAND_MAX==0x7fff);for(int i=0;i<n;i++){int r;while((r=rand())>=30000);a[i]=r;}}void check(int* a,int n){for(int i=0;i<n-1;i++){assert(a[i]<=a[i+1]);}}void print(int *a,int n){for(int i=0;i<n;i++){cout<<a[i]<<"\t";}cout<<endl;}int main(){int a[1000];int n=sizeof(a)/sizeof(int);produce(a,n);print(a,n);qsort(a,n);print(a,n);check(a,n);system("pause");return 0;}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 鸢翔支付关注:200多村民跪求见市长现场!!
- HTTPS下请求HTTP时客户端不带Referer头部
- 第三章 界面UI的基石—UI布局(3)
- Xcode 6单元测试:XCTestCase/XCTestExpectation/measureBlock()
- CSS居中的不同情况使用不同的方法
- 快速排序
- Xcode 单元测试
- Linux中杀掉特定名称的进程
- Freescale i.MX6 Linux Ethernet Driver驱动源码分析(1)
- PB编程常用API函数
- 网页头部的属性设置技巧
- C语言中打印PC的值
- leedcode做题总结, 题目Construct Binary Tree from Preorder。。。105/106
- 梦想 震撼世界(转自网络)