桶排序 (bucket sort)或所謂的箱排序,是乙個排序演算法, 是將乙個資料表分割成許多buckets,然後每個bucket各自排序,或用不同的排序演算法,或者遞迴的使用bucket sort演算法。也是典型的divide-and-conquer分而治之的策略。它是乙個分布式的排序,介於msd基數排序和lsd基數排序之間。
將陣列分到有限數量的桶子裡。每個桶子再個別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序)。
桶排序的平均時間複雜度為線性的o(n+c),其中c=n*(logn-logm)。如果相對於同樣的n,桶數量m越大,其效率越高,最好的時間複雜度達到o(n)。當然桶排序的空間複雜度為o(n+m),如果輸入資料非常龐大,而桶的數量也非常多,則空間代價無疑是昂貴的。此外,桶排序是穩定的。 [1]
九大排序演算法
常見的排序分為兩類,一類是內部排序 直接插入排序 希爾排序 簡單選擇排序 堆排序 氣泡排序 快速排序 歸併排序 基數排序 一類是外部排序。當n較大時,應該使用時間複雜度為o nlog2n 的排序,如快速排序 堆排序 歸併排序。快排是基於比較的內部排序中,最好的方法。假設陣列為r 0 r n 1 第一...
九大排序演算法
重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,故名。package com.demo.main 氣泡排序 public c...
十大排序演算法之桶排序(BucketSort)
一 前言 資料結構與演算法,順便刷leetcode,無意間發現了乙個 我覺得講解的比較好的網頁,並且會拿leetcode裡面的題目當做例題,如有需要,奉上 五分鐘學演算法 二 演算法實現的步驟 有限個數字m,每個數字的大小都在1與n之間,則我們可以假設有n個桶,遍歷m個數字,將其存入對應的桶中 如數...