成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java數(shù)據(jù)結(jié)構(gòu)與算法之桶排序?qū)崿F(xiàn)方法詳解-創(chuàng)新互聯(lián)

本文實(shí)例講述了java數(shù)據(jù)結(jié)構(gòu)與算法之桶排序?qū)崿F(xiàn)方法。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)是一家企業(yè)級(jí)云計(jì)算解決方案提供商,超15年IDC數(shù)據(jù)中心運(yùn)營(yíng)經(jīng)驗(yàn)。主營(yíng)GPU顯卡服務(wù)器,站群服務(wù)器,成都服務(wù)器托管,海外高防服務(wù)器,服務(wù)器機(jī)柜,動(dòng)態(tài)撥號(hào)VPS,海外云手機(jī),海外云服務(wù)器,海外服務(wù)器租用托管等。

基本思想:

假定輸入是由一個(gè)隨機(jī)過程產(chǎn)生的[0, M)區(qū)間上均勻分布的實(shí)數(shù)。將區(qū)間[0, M)劃分為n個(gè)大小相等的子區(qū)間(桶),將n個(gè)輸入元素分配到這些桶中,對(duì)桶中元素進(jìn)行排序,然后依次連接桶輸入0 ≤A[1..n] <M輔助數(shù)組B[0..n-1]是一指針數(shù)組,指向桶(鏈表)。將n個(gè)記錄分布到各個(gè)桶中去。如果有多于一個(gè)記錄分到同一個(gè)桶中,需要進(jìn)行桶內(nèi)排序。最后依次把各個(gè)桶中的記錄列出來記得到有序序列。

[桶——關(guān)鍵字]映射函數(shù)

bindex=f(key)   其中,bindex 為桶數(shù)組B的下標(biāo)(即第bindex個(gè)桶), k為待排序列的關(guān)鍵字。桶排序之所以能夠高效,其關(guān)鍵在于這個(gè)映射函數(shù),它必須做到:如果關(guān)鍵字k1<k2,那么f(k1)<=f(k2)。也就是說B(i)中的大數(shù)據(jù)都要小于B(i+1)中最小數(shù)據(jù)。很顯然,映射函數(shù)的確定與數(shù)據(jù)本身的特點(diǎn)有很大的關(guān)系,我們下面舉個(gè)例子:

假如待排序列K= {49、 38 、 35、 97 、 76、 73 、 27、 49 }。這些數(shù)據(jù)全部在1—100之間。因此我們定制10個(gè)桶,然后確定映射函數(shù)f(k)=k/10。則第一個(gè)關(guān)鍵字49將定位到第4個(gè)桶中(49/10=4)。依次將所有關(guān)鍵字全部堆入桶中,并在每個(gè)非空的桶中進(jìn)行快速排序后得到如下圖所示:

對(duì)上圖只要順序輸出每個(gè)B[i]中的數(shù)據(jù)就可以得到有序序列了。

算法核心代碼如下:

/// <summary>
/// 桶排序
///
///如果有重復(fù)的數(shù)字,則需要 List<int>數(shù)組,這里舉的例子沒有重復(fù)的數(shù)字
/// </summary>
/// <param name="unsorted">待排數(shù)組</param>
/// <param name="maxNumber">待排數(shù)組中的大數(shù),如果可以提供的話</param>
/// <returns></returns>
static int[] bucket_sort(int[] unsorted, int maxNumber = 97)
{
 int[] sorted = new int[maxNumber + 1];
 for (int i = 0; i < unsorted.Length; i++)
 {
  sorted[unsorted[i]] = unsorted[i];
 }
 return sorted;
}
static void Main(string[] args)
{
 int[] x = {49、 38 、 35、 97 、 76、 73 、 27、 49 };
 var sorted = bucket_sort(x, 97);
 for (int i = 0; i < sorted.Length; i++)
 {
  if (sorted[i] > 0)
   Console.WriteLine(sorted[i]);
 }
 Console.ReadLine();
}

文章名稱:java數(shù)據(jù)結(jié)構(gòu)與算法之桶排序?qū)崿F(xiàn)方法詳解-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://jinyejixie.com/article24/ggoce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司網(wǎng)站策劃、電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
区。| 肃宁县| 城固县| 静海县| 孝义市| 上思县| 丹巴县| 永州市| 浦城县| 桐城市| 德州市| 孝义市| 仪陇县| 西丰县| 扎囊县| 磐安县| 贺兰县| 保定市| 耒阳市| 都安| 横峰县| 西乌| 五河县| 甘洛县| 西和县| 怀安县| 黔东| 南陵县| 亳州市| 秭归县| 永平县| 蓝田县| 扶风县| 威远县| 富顺县| 五指山市| 卢龙县| 岢岚县| 渭源县| 万源市| 龙游县|