計數排序(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;
	
}

運行結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章