原文地址http://www.cnblogs.com/liukemng/p/3724051.html
桶排序是一種效率很高的排序算法,它的時間復雜度為O(n),但桶排序有一定的限制,只有當待排序序列的元素為0到某一確定取值范圍的整數時才適用,典型的例子比如成績的排序等。
算法思想:
設待排序序列的元素取值范圍為0到m,則我們新建一個大小為m+1的臨時數組并把初始值都設為0,遍歷待排序序列,把待排序序列中元素的值作為臨時數組的下標,找出臨時數組中對應該下標的元素使之+1;然后遍歷臨時數組,把臨時數組中元素大于0的下標作為值按次序依次填入待排序數組,元素的值作為重復填入該下標的次數,遍歷完成則排序結束序列有序。
代碼實現:
/// <summary>/// 桶排序/// </summary>/// <param name="intArray"></param>/// <param name="max"></param>public static void BucketSort(int[] intArray, int max) { //聲明一個長度為max+1的數組,并把數組中的元素全部初始化為0 int[] tempArray = Enumerable.Repeat(0, max+1).ToArray(); for (int i = 0; i < intArray.Length; i++) tempArray[intArray[i]] += 1;//將tempArray下標中等于intArray[i]的元素+1 int insertIndex = 0; for (int j = 0; j < tempArray.Length; j++) { for (int k = 0; k < tempArray[j]; k++) intArray[insertIndex++] = j;//將排序后的元素插入數組tempArray的下標即元素的值 }}以上就是桶排序的內容。
新聞熱點
疑難解答