日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]計(jì)數(shù)排序假設(shè)n個(gè)輸入元素中的每一個(gè)都是介于0到k之間的整數(shù),此處k為某個(gè)整數(shù)。計(jì)數(shù)排序的基本思想就是對(duì)每一個(gè)輸入元素x,確定出小于x的元素個(gè)數(shù)。有了這一信息,就可以把x直接放到它在最終輸出數(shù)組中的位置

計(jì)數(shù)排序假設(shè)n個(gè)輸入元素中的每一個(gè)都是介于0到k之間的整數(shù),此處k為某個(gè)整數(shù)。

計(jì)數(shù)排序的基本思想就是對(duì)每一個(gè)輸入元素x,確定出小于x的元素個(gè)數(shù)。有了這一信息,就可以把x直接放到它在最終輸出數(shù)組中的位置上。例如,如果有17個(gè)元素小于x,則x就屬于第18個(gè)輸出位置。當(dāng)有幾個(gè)元素相同時(shí),這個(gè)方案要略作修改,因?yàn)椴荒馨阉鼈兎旁谕粋€(gè)輸出位置上。

在計(jì)數(shù)排序算法的代碼中,我們假定輸入是個(gè)數(shù)組A[1...n],另外還需要兩個(gè)數(shù)組:存放排序結(jié)果的B[1...n],以及提供臨時(shí)存儲(chǔ)區(qū)的C[0...k]。

#includeusing?namespace?std;

#define?len?8

void?CountSort(int?A[],?int?B[],?int?k)
{
	int?*C=new?int[k+1];
	for(int?i=0;?i<=k;?i++)
		C[i]=0;

	//C[i]包含等于i的元素個(gè)數(shù)
	for(i=0;?i<len;?i++)
		C[A[i]]++;

	//C[i]包含小于等于i的元素個(gè)數(shù)
	for(i=1;?i=0;?i--)//從后往前處理A中的元素,以保證穩(wěn)定性
	{
		B[C[A[i]]-1]=A[i];//C[A[i]]表示A[i]在B中的位置,但B[i]從0開始,不是從1開始,所以要減1
		C[A[i]]--;//可處理元素重復(fù)問題

	}
}

void?main()
{
	int?a[len]={2,5,3,0,2,3,0,3};
	int?*b=new?int[len];
	CountSort(a,?b,?5);

	for(int?i=0;?i<len;?i++)
		cout<<b[i]<<"?";
	cout<<endl;

}


計(jì)數(shù)排序運(yùn)行時(shí)間O(n),計(jì)數(shù)排序不是基于比較的排序算法。

計(jì)數(shù)排序的一個(gè)重要性質(zhì)就是它是穩(wěn)定的:具有相同值的元素在輸出數(shù)組中的相對(duì)次序與它們?cè)谳斎霐?shù)組中的次序相同。亦即,兩個(gè)相同數(shù)之間的順序是這樣來規(guī)定的,即在輸入數(shù)組中先出現(xiàn)的,在輸出數(shù)組中也位于前面。之所以說計(jì)數(shù)排序的穩(wěn)定性非常重要,是因?yàn)橛?jì)數(shù)排序經(jīng)常用作基數(shù)排序算法的一個(gè)子過程。計(jì)數(shù)排序的穩(wěn)定性對(duì)基數(shù)排序的正確性來說,是非常關(guān)鍵的。

保證計(jì)數(shù)排序穩(wěn)定的重要語句是:for(i=len-1; i>=0; i--)//從后往前處理A中的元素,以保證穩(wěn)定性。

?

?

?

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉