桶排序從 1956 年就開始被使用,該演算法的基本思想是由 e.j.issac 和 r.c.singleton 提出來的,
該例子為桶排序的簡化版,方便理解入門。
假設有乙個整型陣列,需要將陣列中的元素從大到小排序並輸出,陣列中的元素最大值<=10,最小值》=0,陣列如下:
1如果第一次學演算法的同學,建議先自行思考十分鐘再繼續往下看。int arr = ;
首先我們可以知道,陣列的元素 maxvalue<=10,minvalue>=0 所以宣告乙個陣列 :
int book = new該陣列的用意為用於記錄數字出現的次數:如果出現數字 0,則將book陣列中對應下標為0的元素+1。同理,出現數字 1,則將book陣列中對應下標為1的元素+1 。int[11];
接下來我們遍歷陣列arr:
for (int i = 0; i < arr.length; i++)遍歷完成後,陣列book已經記錄了arr陣列中每個元素出現的次數。此時只要將book陣列列印出來,就可以看到排序後的效果:
for (int i = book.length - 1; i >= 0; i--)結果如圖:}
排序演算法 資料結構
把插入排序的1變成dk 和圖示不一樣,是冒泡最小 只用於正數 1 public int sortarray int nums 8int bit 0 9while max math.pow 10,bit 12for int i 0 i bit i 17for integer n nums 22int ...
快速排序演算法 資料結構
快排基本思想 在待排序的n個元素中任取乙個元素 通常取第乙個元素 作為基準,把該元素放入最終的位置上 即歸位乙個元素 資料序列被此元素劃分成倆部分 所有關鍵子比該元素關鍵字小的元素放置在前一部分,所有比它大的元素放置在後一部分,這個過程稱作一趟排序。以後對所有的倆部分分別重複上述過程,直至每部分內只...
資料結構與演算法 桶排序
與基數排序法一樣,桶排序也是一種排序的思想。待排資料的值必須在乙個範圍內,然後把這個值域空間劃分為若干區塊,每乙個對應乙個桶,把待排陣列放入到合適的桶中,再對桶內的資料採用任意一種方式排序。整個時間複雜度分為兩部分,第一部分是入桶,為on,第二部分則是所有桶內排序的時間。演算法導論 中證明了這個整體...