快速排序
来源:互联网 发布:cs弹道优化脚本 编辑:程序博客网 时间:2024/06/17 02:58
#include"iostream"#include"cstdlib"using namespace std;const int MAXN = 199;int arr[MAXN];int n;void swap(int i,int j){ int t = arr[i];arr[i] = arr[j];arr[j] = t;}void quick_sort(int left,int right){ if(left>=right){ return; } int i=left,j=right; int base = arr[left]; while(i!=j){ /* 从小到大排序 先从后往前找小的,然后从前往后找大的 1表示找到 0表示未找到符合的元素 j要找小于基准(s),i要找大于基准(b) ------------- | j1 | i1 |i<j swap ib js==>is jb | j1 | i0 |i==>j:i=j break js:is swap(i,left) | j0 | None |j==>i:j=i break ----> before j1 i1 is jb==>is js swap(i,left) | j0 | None |j==>i:j=i break ----> brfore None None j=i=left swap(left,left)<=>swap(i,left) ------------- ------------- | i1 | j1 |i<j swap ib js ==> is jb | i1 | j0 |j==>i:i=j break ib:jb swap(i-1/j-1,left) | i0 | None |i==>j:i=j break ----> before j1 i1 is jb==>ib jb swap(i-1/j-1,left) | i0 | None |i==>j:i=j break ----> before None None j=i=right all small swap(right/i/j,left) ------------- */ while(arr[j]>=base&&i<j) j--; while(arr[i]<=base&&i<j) i++; if(i<j){ swap(i,j); } } swap(i,left); quick_sort(left,i-1); quick_sort(i+1,right);}int main(){ while(cin>>n){ for(int i=0;i<n;i++) arr[i]=rand(); for(int i=0;i<n;i++) cout<<arr[i]<<" ";cout<<endl; quick_sort(0,n-1); for(int i=0;i<n;i++) cout<<arr[i]<<" ";cout<<endl; }}#include"iostream"#include"cstdlib"using namespace std;const int MAXN = 199;int arr[MAXN];int n;void swap(int i,int j){ int t = arr[i];arr[i] = arr[j];arr[j] = t;}int Partition(int left,int right){ int base = arr[left]; while(left<right){ while(arr[right]>=base&&right>left) right--; arr[left]=arr[right]; while(arr[left]<=base&&right>left) left++; arr[right]=arr[left]; } arr[left]=base; return left;}void quick_sort(int left,int right){ if(left<right){ int parti = Partition(left,right); quick_sort(left,parti-1); quick_sort(parti+1,right); }}int main(){ while(cin>>n){ for(int i=0;i<n;i++) arr[i]=rand(); for(int i=0;i<n;i++) cout<<arr[i]<<" ";cout<<endl; quick_sort(0,n-1); for(int i=0;i<n;i++) cout<<arr[i]<<" ";cout<<endl; }}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 第十四周项目4(1)—矩阵相加
- 第十五周项目3---B-树的基本操作
- uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library
- poj2388快速排序
- 健康!睡眠!拉筋!
- 快速排序
- C/C++: for循环
- Python中的闭包实例详解
- 直接插入排序
- LeetCode 26 Remove Duplicates from Sorted Array题解
- idea导入项目后编译提示misc.xml(系统找不到指定的提示文件)
- 如何用Qt Creator进行Debug
- js 对编码后的中文字符解码
- (11)向量组及其线性组合