桶分類 算法_桶分類算法

桶分類 算法

桶分類 (Bucket Sort)

Bucket sort is a sorting technique in which array is partitioned into the buckets. By this, each bucket will be sorted individually, by using some another sorting algorithm such as insertion sort. This sorting technique assumes that the input is drawn from a uniform distribution by which it has an average case of O(n). Bucket sort is a fast technique because bucket sort presumes that the input is generated by a process, which will distribute the element uniformly and independently over the interval.

存儲桶排序是一種將數組劃分為存儲桶的排序技術。 這樣,將使用其他一些排序算法(例如插入排序)分別對每個存儲桶進行排序。 這種排序技術假定輸入是從均勻分布中提取的,該輸入的平均情況為O(n)桶分類是一種快速的技術,因為桶分類假定輸入是由某個進程生成的,該輸入將在間隔內均勻且獨立地分配元素。

桶分類算法 (Algorithm for Bucket Sort)

  1. Set up an array of initially empty buckets.

    設置一系列最初為空的存儲桶。

  2. Put the element in the corresponding bucket.

    將元素放入相應的存儲桶中。

  3. Sort each non-empty bucket.

    對每個非空桶進行排序。

  4. Visit the bucket in order and put all the elements into a sequence and print them.

    按順序訪問存儲桶,并將所有元素放入序列中并打印。

桶分類的偽代碼 (Pseudo code for Bucket Sort)

void bucketsort (int a[ ], int n, int max)
{
int i,j=0;
//initialize each bucket 0 and then make bucket empty.
int* buckets = calloc(max+1, size of (int));
for(int i=0; i<n; i++)
buckets[a[i]]++;
//now sort each bucket individually.
//sequentially empty each bucket in some array.
for(i=0; i<max; i++)
while (buckets[i]--)
b[j++]=i;
//display the array b as sorted list of elements.
}

Example:

例:

Let us sort the elements by using bucket sort. Elements which need to be sort are 56, 12, 84, 28, 0,-13, 47, 94, 31, 12.

讓我們使用存儲桶排序對元素進行排序。 需要排序的元素是56,12,84,28,0,-13,47,94,31,12。

Step 1) First set up an array which is given below:

步驟1)首先建立一個數組,如下所示:

Bucket sort 1

Step 2) Now consider the range such that:

步驟2)現在考慮范圍,使得:

-20 to -1, 0 to 10 10 to 20, 20 to 30, 30 to 40, 40 to 50, 50 to 60, 60 to 70, 70 to 80, 80 to 90, 90 to 100.

-20至-1、0至10 10至20、20至30、30至40、40至50、50至60、60至70、70至80、80至90、90至100。

Now we fill up each bucket by given elements,

現在,我們通過給定的元素填充每個存儲桶,

Bucket sort 2

Step 3) Now sort the each bucket and then print the array by visiting each bucket sequentially.

步驟3)現在,對每個存儲桶進行排序,然后依次訪問每個存儲桶以打印陣列。

Bucket sort 3

-13, 0, 12, 12, 28, 31, 47, 56, 84, 94

-13、0、12、12、28、31、47、56、84、94

This is the sorted list.

這是排序的列表。

桶分類的缺點 (Drawbacks of Bucket Sort)

  1. For the bucket sort, it’s the necessary part that the maximum value of the element must be known.

    對于存儲桶排序,必須知道元素的最大值是必不可少的部分。

  2. In this type of technique, we have to create enough buckets in the memory for every element, to place in the array.

    在這種技術中,我們必須在內存中為每個元素創建足夠的存儲桶,以放置在數組中。

桶排序分析 (Analysis of the bucket Sort)

Average case, best case, and worst case time complexity of this algorithm is O(n).

該算法的平均情況,最佳情況和最壞情況的時間復雜度為O(n)

翻譯自: https://www.includehelp.com/algorithms/bucket-sort-algorithm.aspx

桶分類 算法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540747.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540747.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540747.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

百度之星初賽(A)——T5

今夕何夕 Problem Description今天是2017年8月6日&#xff0c;農歷閏六月十五。 小度獨自憑欄&#xff0c;望著一輪圓月&#xff0c;發出了“今夕何夕&#xff0c;見此良人”的寂寞感慨。 為了排遣郁結&#xff0c;它決定思考一個數學問題&#xff1a;接下來最近的哪一年里的同…

mycat 不得不說的緣分

1&#xff0c;愕然回首。它在燈火闌珊處關于mysql集群中間件。曾經寫在應用程序里面&#xff0c;由開發者實現&#xff0c;在配置文件中面寫多個數據源&#xff0c;寫庫一個數據源&#xff0c;讀庫一個數據源&#xff0c;笨拙不高效&#xff0c;由于程序猿的差異化。效果并非特…

python創建空元組_用Python創建空元組

python創建空元組Python | 空元組 (Python | empty tuple) In python, we can also create a tuple without having any element. An empty tuple is created using a pair of round brackets, (). 在python中&#xff0c;我們也可以創建一個沒有任何元素的元組 。 使用一對圓括…

共享馬扎的火爆,原來是一場營銷!

如今&#xff0c;人們的生活仿佛已經被“共享化”&#xff1a;上班有共享單車、睡覺有共享床鋪、商場有共享充電寶、去機場有共享巴士……好像除了男女朋友是自己的&#xff0c;其他都要共享了&#xff01;哎&#xff0c;不對&#xff01;前些日子&#xff0c;竟然還真有了共享…

什么是CDP(連續數據保護)?

CDP&#xff1a;連續數據保護 (CDP: Continuous Data Protection) CDP is an abbreviation of "Continuous Data Protection". It is also called as a real-time backup, is a system of data storage that backs up data in an organization or enterprise on a sy…

Git實戰(二)原理

上次的博文Git實戰&#xff08;一&#xff09;版本號控制概述中我們簡介了一下版本號控制系統的概念&#xff0c;重點對版本號控制的三種類型進行了分析和對照&#xff0c;從本篇博文開始我們進入Git的世界&#xff0c;首先介紹一下Git實現版本號控制的原理。 Git與SVN等其它版…

什么是html的混雜模式_HTML的完整形式是什么?

什么是html的混雜模式HTML&#xff1a;超文本標記語言 (HTML: Hyper Text Markup Language) HTML is an abbreviation of Hypertext markup language. Hypertext markup language is a text based standard markup language used to create web pages and design documents whi…

PHP-Manual的學習----【語言參考】----【類型】-----【對象】

Object 對象1.對象初始化要創建一個新的對象 object &#xff0c;使用 new 語句實例化一個類&#xff1a; class foo{ function do_foo(){ echo "1111"; }}$bar new foo;echo $bar->do_foo();輸出&#xff1a;1111注解&#xff1a;一個類可以初始化…

kotlin 兩個數字相加_Kotlin程序交換兩個數字

kotlin 兩個數字相加Given two numbers, we have to swap them. 給定兩個數字&#xff0c;我們必須交換它們。 Example: 例&#xff1a; Input:First number: 10Second number: 20Output:First number: 20Second number: 10To swap two numbers – here we are using third v…

Kotlin入門(14)繼承的那些事兒

上一篇文章介紹了類對成員的聲明方式與使用過程&#xff0c;從而初步了解了類的成員及其運用。不過早在《Kotlin入門(12)類的概貌與構造》中&#xff0c;提到MainActivity繼承自AppCompatActivity&#xff0c;而Kotlin對于類繼承的寫法是“class MainActivity : AppCompatActiv…

在Scala中列出| 關于Scala列表的完整教程

Scala | 清單 (Scala | List) List in Scala is a collection that stores data in the form of a liked-list. The list is an immutable collection which means the elements of a list cannot be altered after the list is created. Lists are flexible with data types, …

MySQL單機多實例部署詳解之------多實例分別定義不同的配置文件

mysql多實例安裝---分別定義不同的配置文件1.安裝MySQL需要的依賴包[rootMySQL ~]# yum install ncurses-devel libaio-devel cmake -y[rootMySQL ~]# rpm -qa ncurses-devel libaio-develncurses-devel-5.7-4.20090207.el6.x86_64libaio-devel-0.3.107-10.el6.x86_642.安裝編譯…

javascript模塊_JavaScript中的模塊

javascript模塊JavaScript模塊 (JavaScript Modules) One of the key features of programming fundamentals is breaking down your code into fragments. These fragments depending on its functionality have been coined various terms like functions, components, modul…

在mac上安裝Docker

1.進入一下地址進行下載docker https://download.docker.com/mac/stable/Docker.dmg 進入后進行下載后進行安裝 2.將其拖動到Appliaction中即可 3.第一打開會有一個這樣的歡迎頁面 3.檢查是否安裝完成 出現上圖所示標示安裝完成了

composer 檢查鏡像_檢查N元樹中的鏡像

composer 檢查鏡像Problem statement: 問題陳述&#xff1a; Given two n-ary trees, the task is to check if they are mirrors of each other or not. 給定兩個n元樹&#xff0c;任務是檢查它們是否互為鏡像。 Note: you may assume that root of both the given tree as …

浪潮各機型前面板指示燈含義

NF560D2 NF3020M2 NF5020M3 NF5140M3 NF5212H2 NF5220 NF5224L2 NF5240M3 NF5270M3 NF5280M2 NF5280M3 NF5540M3 NF5580M3 NF8420M3 NF8520 NF8560M2 說明&#xff1a;轉浪潮官網。

python dll 混合_Python | 條線混合圖

python dll 混合In some of the cases, we need to plot a bar-line hybrid plot. This plot helps in a better understanding of dynamics as well as the relative magnitude of each point in the plot. Bar-Line Hybrid Plots are mostly used for the representation of …

測試八 賽后感受

測試八 當我打開T1的時候&#xff0c;就沒有往下看題目了&#xff0c;主要是發現T1就是之前做過&#xff0c;而且我也看過題解的題目&#xff0c;接著就開始鉆研&#xff0c;當然&#xff0c;也沒什么好鉆研的&#xff0c;大概思路還是知道的&#xff0c;再寫寫數據就已經很清晰…

推薦五個免費的網絡安全工具

導讀&#xff1a; 在一個完美的世界里&#xff0c;信息安全從業人員有無限的安全預算去做排除故障和修復安全漏洞的工作。但是&#xff0c;正如你將要學到的那樣&#xff0c;你不需要無限的預算取得到高質量的產品。這里有SearchSecurity.com網站專家Michael Cobb推薦的五個免費…

bios部署模式審核模式_BIOS的完整形式是什么?

bios部署模式審核模式BIOS&#xff1a;基本輸入輸出系統 (BIOS: Basic Input Output System) BIOS is an abbreviation of the Basic Input Output System. In the beginning, when you first set on your computer, the first software which starts run by the computer is &…