演算法之桶排序

2021-09-27 01:23:02 字數 2207 閱讀 9405

思想:正如網上大部分文章所說,桶排序就是把原始陣列的資料防放入各個桶中。然後對桶再排序,然後把每個桶的資料依次輸出到原始陣列就可以了,我自己寫了個簡陋版本的,不求效率,只求簡易實現。我自己寫這個效率很低,有時間再改進吧。。

public class bucketsort 

long a = system.currenttimemillis();

int array = busketsort(arr,10);

long b = system.currenttimemillis();

system.out.println(b - a + "毫秒");

for (int i = 0; i < arr.length; i++)

}// 陣列 和桶的個數

public static int busketsort(int array,int count)

// 對桶進行排序

int ints = sort1(bucketarray, array);

return ints;

}public static int sort1(int bucketarray, int array)

//組裝資料

int index = 0;

// 一維陣列 代表列

for (int i = 0; i < bucketarray.length; i++) }}

return array;

}// 根據桶的容量和陣列中最小值求得資料在哪個桶

public static int getindex(int a, int min, int capacity)

}

思考桶排序的關鍵點:

1.在於如何確定桶的個數以及每個桶所儲存的資料量。每個桶的容量應該是相同的

公式如下:

桶的個數*桶的容量大於等於陣列中的最大值-最小值 桶之間的間距和桶的容量相等。

// 根據桶的容量和陣列中最小值求得資料在哪個桶

public static int getindex(int a, int min, int capacity)

// 根據桶的容量求得桶的數量

public static int getbucketcount(int array, int capacity, int max, int min)

// 根據桶的數量求得桶的容量

public static int getbucketlength(int array, int count, int max, int min)

維基百科桶排序:

利用arraylist來對資料排序,

public static void main(string args) 

for (int i = 0; i < arr.length; i++)

system.out.println("----------------------------------");

long a = system.currenttimemillis();

int array = busketsort(arr, 10);

long b = system.currenttimemillis();

system.out.println(b - a + "毫秒");

for (int i = 0; i < arr.length; i++)

}// 陣列 和桶的個數

public static int busketsort(int array, int count)

if (array[i] < min)

}// 初始化建立桶

list bucketlist = new arraylist>();

for (int i = 0; i < count; i++)

for (int i = 0; i < array.length; i++)

arraylistbucket = null;

int index = 0;

for (int i = 0; i < count; i++)

}return array;

}// 把桶內元素插入排序

private static void insertsort(listbucket)

bucket.set(j + 1, temp);

}}

演算法之桶排序

桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。桶排序 bucket sort 的工作的原理 假設輸入資料服從均勻分布,將資料分到有限數量的桶裡,每個桶再分別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排 注意,如果遞迴使用桶排序為各個...

排序演算法之桶排序

1 設定乙個定量的陣列當作空桶子 2 尋訪序列,並且按照要求把記錄乙個乙個放到對應的桶子去 3 對每個不是空的桶子進行排序。4 從不是空的桶子裡把專案再放回原來的序列中。include include include include typedef struct node node,list voi...

排序演算法之桶排序

桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 根據最大值最小值建立多個桶,確定各個桶之間的跨度,然後遍歷原始數列,把各元素放到對應的桶中,先是每個桶內的元素...