插入排序
for(int i=1;i<=n;i++) for(int j=i;j>=2;j--) { if(a[j]>a[j-1]) swap(a[j],a[j-1]); else break; }
選擇排序
for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) if(a[i]>a[j]) swap(a[i],a[j]);
氣泡排序
for(int i=1;i<=n;i++) for(int j=1;j<=n-1;j++) if(a[j]>a[j+1]) swap(a[j],a[j+1]);
快速排序
void q_sort(int l,int r) { if(l<r) { int mid = partition(l,r); q_sort(l,mid-1); q_sort(mid+1,r); } } int partition(int l,int r) { int x = a[r]; int i=l-1; for(int j=l;j<=r-1;j++) { if(a[j]<=x) { i++; swap(a[i],a[j]); } } swap(a[i+1],a[r]); return i+1; }
堆排序
void down(int i,int n) { while(i*2<=n) { int j=i*2; if(j+1<=n && a[j+1]>a[j]) j++; if(a[i]<a[j]) { swap(a[i],a[j]); i=j; } else break; } } for(int i=n/2;i>=1;i--) down(i,n); for(int i=1;i<=n;i++) { swap(a[1],a[n-i+1]); down(1,n-i); }