各大排序的模板
1.冒泡排序
for(i=n;i>=1;--i) { for(j=1;j<=i;++j) { if(a[j]>a[j+1]) { swap(a[j],a[j+1]); } } }
2.快速排序
1.懒人函数
sort(a+1,a+n+1);
2.正常的
void quick_sort(int l,int r) { int x=l,y=r,z=a[x]; if(x>=y) return; while(x<y) { while(x<y) { if(a[y--]<z) { a[x]=a[++y]; break; } } while(x<y) { if(a[x++]>z) { a[y]=a[--x]; break; } } } a[x]=z; quick_sort(l,x-1); quick_sort(x+1,r); }
3.选择排序
for(int i=1;i<n-1;++i) { int minn=0x7fffffff,w; for(int j=i;j<=n;++j) { if(a[j]<minn) { minn=a[j]; w=j; } } swap(a[i],a[w]); }
4.插入排序
for(int i=2;i<=n;++i) { int w=i; for(int j=i;j>=1;--j) { if(a[j]>a[w]) { swap(a[j],a[w]); w=j; } } }
5.希尔排序
#include<bits/stdc++.h> using namespace std; int n,a[100001]; void ShellSort(int left,int right) { int len = right - left +1; int gap,i,j,temp; for(gap=len/2;gap>0;gap/=2) for(i=left+gap;i<=right;i++) for(j=i-gap;j>=left && a[j]>a[j+gap];j-=gap){ temp = a[j]; a[j] = a[j+gap]; a[j+gap] = temp; } } int main() { cin>>n; for(int i=1;i<=n;++i) { cin>>a[i]; ShellSort(1,i); if(i%2==1) cout<<a[i/2+1]<<endl; } return 0; }