快速排序
#include<cstdio> #include<string> #include<stdlib.h> #include <string.h> #include<iostream> #include<queue> using namespace std; int A[100]={5,6,8,3,9,7,4,10,45,22}; void quicksort(int l,int r){ int value=A[l]; int i=l,j=r; while(i<j){ while(i<j&&A[j]>value)j--; if(i<j)A[i++]=A[j]; while(i<j&&A[i]<value)i++; if(i<j)A[j--]=A[i]; } A[i]=value; if(l<r){ quicksort(l,i-1); quicksort(i+1,r); } } int main(){ quicksort(0,9); for(int i=0;i<10;i++){ printf("%d ",A[i]); } return 0; }
归并排序
#include<cstdio> #include<string> #include<stdlib.h> #include <string.h> #include<iostream> #include<queue> using namespace std; int A[100]={5,6,8,3,9,7,4,10,45,22}; int B[100]; void mergesort(int l,int r){ if(l==r)return ; //printf("%d %d\n",l,r); int mid=(l+r)/2; mergesort(l,mid); mergesort(mid+1,r); int i=l,j=mid+1,k=l; while(i<=mid&&j<=r){ if(A[i]>A[j])B[k++]=A[j++]; else B[k++]=A[i++]; } while(i<=mid)B[k++]=A[i++]; while(j<=r)B[k++]=A[j++]; for(int i=l;i<=r;i++) A[i]=B[i]; } int main(){ mergesort(0,9); for(int i=0;i<10;i++) printf("%d ",B[i]); return 0; }