-
数据结构实验之排序二:交换排序
- Submit Statistic Discuss
- 首先来了解一下, 排序大致可以分为哪几种:
- 交换排序: 包括冒泡排序,快速排序。
- 选择排序: 包括直接选择排序,堆排序。
- 插入排序: 包括直接插入排序,希尔排序。
- 合并排序: 合并排序。
-
#include<bits/stdc++.h> using namespace std; #define maxn 10005 int a[maxn],b[maxn],sum1,sum2,n; void quicksort(int a[],int left,int right) { int temp=a[left]; int i=left,j=right; if(i>=j) return; while(i<j) { while(i<j&&a[j]>=temp) j--; if(i!=j)sum1++; a[i]=a[j]; while(i<j&&a[i]<=temp) i++; if(i!=j)sum1++; a[j]=a[i]; } a[i]=temp; quicksort(a,left,i-1); quicksort(a,i+1,right); } int main() { while(cin>>n) { sum1=sum2=0; for(int i=1; i<=n; i++) { cin>>a[i]; b[i]=a[i]; } quicksort(a,1,n); for(int i=1; i<=n; i++) for(int j=i+1; j<=n; j++) if(b[i]>b[j]) { sum2++; swap(a[i],a[j]); } cout<<sum2<<" "<<sum1<<endl; } return 0; }