1. 程式人生 > >計數排序(c++實現)

計數排序(c++實現)

簡單計數排序:

假設待排序的陣列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;
	
}

執行結果: