快排模板
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快排模板相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cstdio> #include<cmath> using namespace std; void quicksort(int a[],int left,int right) { int i,j,base; i=left; j=right; base=a[(i+j)/2]; while (i<=j){ while (a[i]<base) i++; while (a[j]>base) j--; if (i<=j){ int t=a[i]; a[i]=a[j];a[j]=t; i++; j--; } } if (left<j) quicksort(a,left,j); if (i<right) quicksort(a,i,right); } int main(){ int i,b[100001],n; cin>>n; for(i=1;i<=n;i++){ scanf("%d",&b[i]); } quicksort(b,1,n); for(i=1;i<=n;i++){ printf("%d ",b[i]); } }
///快排模板,我的那种真的简单额。 #include<stdio.h> #include<stdlib.h> #include<iostream> #include<string.h> #include<cstring> #include<string> #include<math.h> #include<algorithm> #define LL long long #define inf 0x3f3f3f3f #define mod 1e9+7 #include<vector> using namespace std; int Partition(int a[], int left, int right)///7行代码 { int i = left-1;///初始化一定要赋值好。 for(int j=left;j<=right-1;j++){ if(a[j] < a[right]){///把right这个作为轴了。 i++;///这个i坐标左边的值就是比a[right]小的。 swap(a[i], a[j]);///必须交换一下。 } } swap(a[i+1], a[right]);///最后把i+1和right交换,这样轴就是i+1了必须是保证i+1上当初就是作为标杆的a[right]啊。 return i+1; } void Qsort(int a[], int left, int right) { if(left<right){ int q = Partition(a, left, right); Qsort(a, left, q-1); Qsort(a, q+1, right); } } int main() { int number[30] = {23,3,26,24,5,1,12,21,29,15,17,10,7,22,6,20,19,11,2,4,9,25,13,27,14,18,28,8,16,30}; Qsort(number,0,30-1);///c初始化调用也要注意额。 for(int i=0;i<30;i++){ printf("%d ",number[i]); } }
以上是关于快排模板的主要内容,如果未能解决你的问题,请参考以下文章