快速排序
2012-03-05 16:02
204 查看
#include<iostream> #include<time.h> #include<stdlib.h> using namespace std; #define N 15 void print(int a[],int n) { int i=1; while(i<=N) { cout<<a[i]<<" "; i++; } cout<<endl; } void s_swap(int &a,int &b) { int t=a; a=b; b=t; } int s_less(int &a,int &b) { return a<b?1:0; } int partion_v1(int a[],int l,int r) { int i=l-1; int j=r; int v = a[r]; while(1) { while(s_less(a[++i],v)); while(s_less(v,a[--j])) { if(j==l) { break; } } if(i>=j){ break; } s_swap(a[i],a[j]); } return i; } int partion(int a[],int l,int r) { int x=a[r]; int i=l-1; for(int j=l;j<r;j++) { if(x>=a[j]){ i++; s_swap(a[i],a[j]); } } s_swap(a[i+1],a[r]); return i+1; } void quicksort(int a[],int l,int r) { if(l<r) { int p=partion(a,l,r); quicksort(a,l,p-1); quicksort(a,p+1,r); } } void quicksort_v1(int a[],int l,int r) { if(r<=l){ return; } int p=partion_v1(a,l,r); quicksort(a,l,p-1); quicksort(a,p+1,r); } int main() { int a[N+1]; srand(time(0)); for(int i=1;i<=N;i++) { a[i] = rand()%(100*N); } quicksort_v1(a,1,N); print(a,N); return 0; }
相关文章推荐
- 菜鸟学算法:输入输出文件的海量数据(快速排序,数组排序)
- 快速排序
- 排序算法(五)——快速排序
- 冒泡排序,选择排序,快速排序,插入排序,折半选择排序
- Java 快速排序 quicksort
- 【C语言】快速排序优质算法的动态显示和字符串的快排
- C语言快速排序函数qsort
- (C语言)八大排序之:堆排序、快速排序
- 快速排序C++
- 蓝桥杯第七届_快速排序
- 快速排序java实现(基础)
- 快速排序
- 快速排序 归并排序 堆排序 希尔排序
- 快速排序
- 读书笔记--快速排序
- PourOver – 快速筛选和排序大的数据集合
- 快速排序
- python 快速排序 代码
- 快速排序
- 冒泡排序、选择排序、插入排序、快速排序