本文最后更新于300 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
快速排序
#include<iostream>
using namespace std;
void quick_sort(int* a, int left, int right) {
int l = left-1;
int r = right+1;
if(left>=right)
return ;
int k = a[left];
while(l<r){
do l++; while(a[l]<k);
do r--; while(a[r]>k);
if(l<r)
swap(a[l],a[r]);
}
quick_sort(a,left,r);
quick_sort(a,r+1,right);
return ;
}
int main() {
int a[10] = { 5,9,8,2,4,25,35,598,3592,20 };
quick_sort(a, 0, 9);
for (int i = 0;i < 10;i++) {
printf("%d ", a[i]);
}
}
归并排序
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e3+10;
void mergearray(int *a,int start,int mid,int last){
int i = start,j = mid+1;
int k =0 ;
int n = mid,m = last;
int temp[N];
while(i<=n&&j<=m){
if(a[i]<=a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];
}
while(i<=n)
temp[k++]=a[i++];
while(j<=m)
temp[k++]=a[j++];
for(i = 0;i<k;i++)
a[start + i] = temp[i];
}
void mergesort(int *a,int start,int last){
if(start>=last) return ;
int mid = (start+last)/2;
mergesort(a,start,mid);
mergesort(a,mid+1,last);
mergearray(a,start,mid,last);
}
int main(){
int arr[N];
int n;
cin>>n;
for(int i =0 ;i<n;i++)
cin>>arr[i];
mergesort(arr,0,n-1);
for(int i =0;i<n;i++)
cout<<arr[i]<<' ';
return 0;
}