計數排序(c++實現)
阿新 • • 發佈:2019-01-02
簡單計數排序:
假設待排序的陣列a中共有N個整數,並且已知陣列a中資料的範圍[0, MAX)。在桶排序時,建立容量為MAX的陣列r,並將陣列元素都初始化為0;。
在排序時,遍歷陣列a,將陣列a的值,作為陣列r的下標。當a[i]被讀取時,就將r[a[i]]的值加1。例如,讀取到陣列a[3]=5,則將r[5]的值+1。
很簡單,
#include "stdafx.h" #include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; int main() { int a[25]={1,3,5,7,8,10,12,11,19,8,15,13,12,17,2,4,6,8,9,10,11,19,18,13,12};//25個數,數的範圍都在(0~20); cout<<"before sort"<<endl; for(int i=0;i<24;i++) { cout<<a[i]<<' '; } cout<<a[24]<<endl; vector<int>b(20); cout<<"after sort"<<endl; for(int i=0;i<25;i++) { b[a[i]]++; } for(int j=0;j<20;j++) { while(b[j]>0) { cout<<j<<' '; b[j]=b[j]-1; } } return 0; }
執行結果: