快速排序 随机化版本
来源:互联网 发布:量化投资 数据挖掘 编辑:程序博客网 时间:2024/05/14 15:48
/*函数:快速排序a[p..q-1] 中的每一个元素小于a[q]a[q+1..r] 中的每个元素均大于a[q]通过产生随机数的方法,保证等概率从候选项中选择主元.时间:15.7.15Jason Zhou 热爱你所写下的程序,他是你的伙伴,而不是工具.*/#include<iostream>#include<stdlib.h>#include <time.h>using namespace std;//产生[m,n]的随机数int rand_data(int m,int n){ return m+rand()%(n-m+1);}//交换两个元素int swap_data(int &a,int &b){ int tmp=a; a=b; b=tmp; return 0;}//数组的划分,实现对数组arr[p..r]的原址重排int partition(int arr[],int p,int r){ //将最后一个数据进行比较.小的放到该数前面,大的放到该数后面,时间复杂度O(n) int a=rand_data(p,r); swap_data(arr[a],arr[r]); int x=arr[r];//a[r]作为主元 int i=p-1; for (int j=p;j<r;j++) { if (arr[j]<x) { swap_data(arr[++i],arr[j]); } } swap_data(arr[++i],arr[r]); return i;//返回划分位置}int quick_sort(int arr[],int p,int r){ if (p<r) { int q=partition(arr,p,r); quick_sort(arr,p,q-1); quick_sort(arr,q+1,r); } return 0;}int main(){ srand((unsigned)time(NULL)); int data[13]={8,5,4,6,13,7,1,9,12,11,3,10,2}; int len=sizeof(data)/sizeof(data[0]); cout<<"原始数据"<<endl; for (int i=0;i<len;i++) { cout<<data[i]<<" "; } cout<<endl; quick_sort(data,0,len-1);//快读排序 cout<<"快速排序"<<endl; for (int i=0;i<len;i++) { cout<<data[i]<<" "; } cout<<endl; return 0;}
0 0
- 快速排序(随机化版本)
- 快速排序随机化版本
- 快速排序随机化版本
- 快速排序 随机化版本
- 快速排序的随机化版本
- 快速排序的随机化版本
- 快速排序的随机化版本
- 快速排序(随机化版本)
- 快速排序的随机化版本
- 快速排序(随机化版本)
- 快速排序学习2(随机化版本)
- 快速排序随机化版本性能比较
- 算法实践篇-快速排序-随机化版本
- 经典算法--快速排序的随机化版本
- 快速排序之随机化版本(7)
- 快速排序的随机化版本代码
- CLRS 7.3快速排序的随机化版本
- 算法基础4:快速排序(随机化版本)
- Record、大一
- matlb中如何设置坐标轴的参数以及进行绘图的如何进行注释
- mysql主从数据库不同步的3种解决方法
- 黑马程序员-C语言基础一:关键字、标识符、注释
- 第三方控件引起的"类型Universe无法解析程序集"
- 快速排序 随机化版本
- log4j+commons-logging结合使用
- 最近工作
- 批处理与管道-过滤器
- SQL中Group By的使用
- Android高效加载大图、多图解决方案_LruCache,有效避免程序OOM
- [转]Zend Studio 10.0.1 下载安装与注册码破解
- POJ 1861 Network //Kruscal算法
- Centos配置国内yum源