首页 > 代码库 > 快排模板
快排模板
#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]); } }
快排模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。