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

C/C++語言八大排序算法之桶排序全過程示例詳解

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

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

首先我們要求出一個數組的最大數然后求出他的最大位數 

//求最大位數的函數
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表示取位數的余數
{
	//要申請一個二維10*10的數組區(qū)保存數字
	int bucket[10][10];
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			bucket[i][j] = -1;
            //隨便什么數字只要不要與排序數字有相同就可以
		}
	}
	int temp = 1;
	for (int i=1; i < div; i++)
	{
		temp = temp * 10;//求出第幾位余數
	}
	for (int i = 0; i < len; i++)
	{		
		int k = (a[i]/temp) % 10;//求第幾位的余數
		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++;//去遍歷桶 讓桶的所有數字都出來
				bucket[i][j] = -1;
			}
		}
	}
}

最后通過最大的數的位數來表示要進行幾次入桶和出桶

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 };代碼演示全過程

 

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

 第二次入桶過程

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

 說明:如果取余為沒有那么他就是為0 的

 

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

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

以上就是C/C++語言八大排序算法之桶排序過程示例詳解的詳細內容,更多關于C/C++語言排序算法的資料請關注腳本之家其它相關文章!

相關文章

  • C++ 中類對象類型的轉化的實例詳解

    C++ 中類對象類型的轉化的實例詳解

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

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

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

    Objective-C中使用STL標準庫Queue隊列的方法詳解

    這篇文章主要介紹了Objective-C中使用STL標準庫Queue隊列的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • C語言實現從指定位置截取文件內容

    C語言實現從指定位置截取文件內容

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

    C++實現重載矩陣的部分運算符

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

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

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

    C++?BoostAsyncSocket實現異步反彈通信的案例詳解

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

    vscode和cmake編譯多個C++文件的實現方法

    這篇文章主要介紹了vscode和cmake編譯多個C++文件的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C++類模板以及保存數據到文件方式

    C++類模板以及保存數據到文件方式

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

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

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

最新評論

西乌| 高平市| 渑池县| 教育| 尉犁县| 新乡县| 高要市| 丰镇市| 儋州市| 天祝| 郯城县| 永泰县| 拉萨市| 永城市| 乐安县| 镇康县| 甘肃省| 临桂县| 黑龙江省| 呈贡县| 乌拉特中旗| 新邵县| 宁陕县| 土默特左旗| 楚雄市| 岚皋县| 石泉县| 隆德县| 东台市| 宣城市| 繁昌县| 自贡市| 凯里市| 恩平市| 渑池县| 灵璧县| 东山县| 鄂尔多斯市| 宜丰县| 沈阳市| 台中县|