資料結構實驗之排序二-冒泡與快排
阿新 • • 發佈:2019-02-12
15 9
#include<iostream> using namespace std; int k; void qsort(int l,int r,int a[]) { if(l>=r) return ; int i=l,j=r,s=a[l]; while(i<j) { while(i<j&&a[j]>=s) j--; a[i]=a[j]; if(i!=j) k++; while(i<j&&a[i]<=s) i++; a[j]=a[i]; if(i!=j) k++; } a[i]=s; qsort(l,i-1,a); qsort(i+1,r,a); } void maopao(int a[],int n) { for(int i=1;i<=n-1;i++) { for(int j=1;j<=n-i;j++) { if(a[j]>a[j+1]) { int t=a[j]; a[j]=a[j+1]; a[j+1]=t; k++; } } } cout<<k<<" "; } int main() { int a[100001],b[100001],n,i,j; while(cin>>n) { k=0; for(i=1;i<=n;i++) { cin>>a[i]; b[i]=a[i]; } maopao(a,n); k=0; qsort(1,n,b); cout<<k<<endl; } return 0; }