桶排序,又简单,又快速,适合处理大量数据
桶排序#include<iostream> using namespace std; int n ; int a[1000]; // O(m+n) int main() { while(cin>>n) { for(int i=1;i<=n;++i) { int t; cin>>t; a[t]++; } //桶排序 for(int i = 1;i<1000;++i)//从小到大 //for(int i =1000-1;i>=0;--i)//从大到小 { for(int j =1;j<=a[i];++j) { cout<<i<<" "; } } cout<<endl; } return 0; }归并排序#include<iostream> using namespace std; typedef long long ll; ll a[1000000]; void merge(ll *A,ll start,ll mid,ll end) { ll p =start,q = mid+1; ll arr[end-start+1],k =0; for(ll i =start;i<=end;i++) { if(p>mid) arr[k++] = A[q++]; else if(q>end) { arr[k++] = A[p++]; } else if(A[p]<A[q]) { arr[k++] = A[p++]; } else { arr[k++] = A[q++]; } } for(int p=0;p<k;++p) { A[start++] =arr[p]; } } void mergesort(ll *A,ll start,ll end) { if(start<end) { ll mid = (start+end)/2; mergesort(A,start,mid); mergesort(A,mid+1,end); merge(A,start,mid,end); } } int main() { int n; while(cin>>n) { for(int i =0;i<n;++i) cin>>a[i]; mergesort(a,0,n-1); for(int i=0;i<n;++i) cout<<a[i]<<" "; cout<<endl; } return 0; }堆排序#include<iostream> using namespace std; typedef long long ll; ll a[100000]; void swap(ll *a,ll i,ll j) { ll t = a[i]; a[i] = a[j]; a[j] = t; } void heapify(ll *tree,ll n,ll i) { if(i>=n) return ; ll c1 = 2*i+1; ll c2 = 2*i+2; ll max = i; if(c1<n&&tree[c1]>tree[max]) { max = c1; } if(c2<n&&tree[c2]>tree[max]) { max = c2; } if(max != i) { swap(tree,max,i); heapify(tree,n,max); } } void heapsort(ll *a,ll n) { for(ll i =n/2-1;i>=0;i--) { heapify(a,n,i); } for(ll i=n-1;i>=0;i--) { swap(a,i,0); heapify(a,i,0); } } int main() { int n; while(cin>>n) { for(ll i =0;i<n;++i) cin>>a[i]; heapsort(a,n); for(ll i =0;i<n;++i) cout<<a[i]<<" "; cout<<endl; } return 0; }qsortc++的函数库
#include<iostream> #include<cstdlib> using namespace std; int cmp(const void *a,const void *b) { return *(int *)a - *(int *)b; } int main() { int n = 10; int a[10] = {-7,6,2,0,3,9,8,4,1,5}; qsort(a,n,sizeof(n),cmp); for(int i =0;i<=10;++i) cout<<a[i]<<" "; cout<<endl; system("pause"); return 0; } ---来自腾讯云社区的---AngelNH
微信扫一扫打赏
支付宝扫一扫打赏