最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++語(yǔ)言八大排序算法之桶排序全過(guò)程示例詳解

 更新時(shí)間:2021年11月18日 10:54:15   作者:xr415  
這篇文章主要為大家介紹了C/C++語(yǔ)言八大排序算法之桶排序算法過(guò)程的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

基本思路是將所有數(shù)的個(gè)位十位百位一直到最大數(shù)的最高位一步步裝桶,先個(gè)位裝桶然后出桶,直到最高位入桶出桶完畢。

首先我們要求出一個(gè)數(shù)組的最大數(shù)然后求出他的最大位數(shù) 

//求最大位數(shù)的函數(shù)
int getmaxweisu(int* a,int len)//
{
	int max = a[0];
	for (int i = 0; i < len; i++)
	{
		if (max < a[i])
		{
			max = a[i];
		}
	}
	int count = 1;
	while (max/10)
	{
		count++;
		max /= 10;
	}
	return  count;
}

其次我們先按各位裝桶然依次遞推下

void buckle_sort(int* a, int len,int div)//div表示取位數(shù)的余數(shù)
{
	//要申請(qǐng)一個(gè)二維10*10的數(shù)組區(qū)保存數(shù)字
	int bucket[10][10];
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			bucket[i][j] = -1;
            //隨便什么數(shù)字只要不要與排序數(shù)字有相同就可以
		}
	}
	int temp = 1;
	for (int i=1; i < div; i++)
	{
		temp = temp * 10;//求出第幾位余數(shù)
	}
	for (int i = 0; i < len; i++)
	{		
		int k = (a[i]/temp) % 10;//求第幾位的余數(shù)
		for (int j = 0; j < 10; j++)
		{
			if (bucket[k][j] == -1)
			{
				bucket[k][j] = a[i];
				break;
			}
		}
	}
	//出桶
	int k = 0;
	for (int i = 0; i < len; i++)
	{
		for (int j = 0; j < len; j++)
		{
			if (bucket[i][j] != -1)
			{
				a[k] = bucket[i][j];
				k++;//去遍歷桶 讓桶的所有數(shù)字都出來(lái)
				bucket[i][j] = -1;
			}
		}
	}
}

最后通過(guò)最大的數(shù)的位數(shù)來(lái)表示要進(jìn)行幾次入桶和出桶

void Bucket_Sort(int* a, int len)
{
	int n=getmaxweisu(a, len);
	for (int m = 1; m <= n; m++)
	{
		buckle_sort(a, len,m);
	}
}

int a[10] = { 1,5,7,21,259,4,11,61,17,98 };代碼演示全過(guò)程

 

 第一次出桶后a數(shù)組的順序1 ,21,11 ,61, 4, 5, 7, 17 ,98, 259

 第二次入桶過(guò)程

 出桶后a數(shù)組為1,4,5,7,11,17,21,259,61,98

 說(shuō)明:如果取余為沒(méi)有那么他就是為0 的

 

 最后一次出桶后就排序好了

 a數(shù)組就為1,4,5,7,11,17,21,61,98,259

以上就是C/C++語(yǔ)言八大排序算法之桶排序過(guò)程示例詳解的詳細(xì)內(nèi)容,更多關(guān)于C/C++語(yǔ)言排序算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++ 中類對(duì)象類型的轉(zhuǎn)化的實(shí)例詳解

    C++ 中類對(duì)象類型的轉(zhuǎn)化的實(shí)例詳解

    這篇文章主要介紹了C++ 中類對(duì)象類型的轉(zhuǎn)化的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • C++11 并發(fā)指南之Lock 詳解

    C++11 并發(fā)指南之Lock 詳解

    這篇文章主要介紹了C++11 并發(fā)指南之Lock 詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Objective-C中使用STL標(biāo)準(zhǔn)庫(kù)Queue隊(duì)列的方法詳解

    Objective-C中使用STL標(biāo)準(zhǔn)庫(kù)Queue隊(duì)列的方法詳解

    這篇文章主要介紹了Objective-C中使用STL標(biāo)準(zhǔn)庫(kù)Queue隊(duì)列的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • C語(yǔ)言實(shí)現(xiàn)從指定位置截取文件內(nèi)容

    C語(yǔ)言實(shí)現(xiàn)從指定位置截取文件內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)從指定位置截取文件內(nèi)容,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符

    C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-10-10
  • C++基礎(chǔ)入門(mén)教程(六):為什么創(chuàng)建類的時(shí)候要用new?

    C++基礎(chǔ)入門(mén)教程(六):為什么創(chuàng)建類的時(shí)候要用new?

    這篇文章主要介紹了C++基礎(chǔ)入門(mén)教程(六):為什么創(chuàng)建類的時(shí)候要用new?本文講解了使用new創(chuàng)建動(dòng)態(tài)結(jié)構(gòu)體、為什么要有new、自動(dòng)存儲(chǔ)(自動(dòng)變量、局部變量)、動(dòng)態(tài)存儲(chǔ)、vector和array等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • C++?BoostAsyncSocket實(shí)現(xiàn)異步反彈通信的案例詳解

    C++?BoostAsyncSocket實(shí)現(xiàn)異步反彈通信的案例詳解

    這篇文章主要為大家詳細(xì)介紹了C++?BoostAsyncSocket如何實(shí)現(xiàn)異步反彈通信,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2023-03-03
  • vscode和cmake編譯多個(gè)C++文件的實(shí)現(xiàn)方法

    vscode和cmake編譯多個(gè)C++文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了vscode和cmake編譯多個(gè)C++文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C++類模板以及保存數(shù)據(jù)到文件方式

    C++類模板以及保存數(shù)據(jù)到文件方式

    這篇文章主要介紹了C++類模板以及保存數(shù)據(jù)到文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++ 程序拋出異常后執(zhí)行順序說(shuō)明

    C++ 程序拋出異常后執(zhí)行順序說(shuō)明

    這篇文章主要介紹了C++ 程序拋出異常后執(zhí)行順序說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02

最新評(píng)論

铜山县| 尤溪县| 库车县| 茂名市| 呈贡县| 五莲县| 安乡县| 盐源县| 镇康县| 白山市| 峨边| 昌吉市| 双柏县| 特克斯县| 南川市| 万山特区| 宜宾市| 阜南县| 都安| 修文县| 肥东县| 蒲城县| 景德镇市| 陇川县| 葫芦岛市| 房产| 于都县| 江华| 平和县| 八宿县| 栾城县| 宁阳县| 岳池县| 临西县| 渑池县| 囊谦县| 乌兰浩特市| 双鸭山市| 客服| 辉南县| 鹤壁市|