千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

十大經(jīng)典排序算法:冒選插(n^2),快堆希歸(n*logn),桶計(jì)基(n)。
(升序排序)
冒泡排序:從第1個位置依次與第2,3....n進(jìn)行比較,大就往后放,小就不變;接著從第2個位置開始依次與第3,4,...n進(jìn)行比較,大就往后放,小就不變;依次類推。
選擇排序:第一次:從第1 位開始遍歷數(shù)組,找到數(shù)組中的最小值,與數(shù)組的第1位進(jìn)行交換;第二次:從第2位開始遍歷數(shù)組,找到數(shù)組中的最小值,與數(shù)組的第2位進(jìn)行交換;依次類推。
插入排序:選擇數(shù)組中的前兩個數(shù)作為一個基準(zhǔn)(有序),從第3個開始逆序遍歷數(shù)組,將其插入到有序數(shù)組中,使插入后的數(shù)組依然有序。依次類推。
快速排序:(冒泡排序的改良)選出一個基準(zhǔn)(pivot)(默認(rèn)為數(shù)組無序時(shí)的第一個)然后遍歷數(shù)組,將比基準(zhǔn)小的數(shù)和比基準(zhǔn)大的數(shù)分開(基準(zhǔn)放到屬于它的有序位置上),然后再從比上一個基準(zhǔn)小(大)的數(shù)中分別重新選擇一個基準(zhǔn),重復(fù)上一輪的遍歷操作。
堆排序:類似于完全二叉樹
希爾排序:(插入排序的改良)例如:當(dāng)數(shù)組長度為10時(shí),gap=10/2=5,第1位和第6位為一組,第2位和第7位為一組,第3位和第8位為一組,第4位和第9位為一組,第5位和第10位為一組。將較小的數(shù)據(jù)放在前,較大的數(shù)據(jù)放在后。然后gap=2,第1、3、5、7、9位為一組,第2、4、6、8、10位為一組,兩兩比較,小的在前大的在后。然后gap=1,依次比較,小的在前,大的在后。
歸并排序:數(shù)組數(shù)據(jù)兩兩比較,四四比較,八八比較,......直到數(shù)組數(shù)據(jù)全部一起比較,小的在前,大的在后。
桶排序:定義一個區(qū)間大小(桶),如:10個區(qū)間大小,0-9,10-19.....,然后在桶中進(jìn)行排序,然后依次輸出
計(jì)數(shù)排序:(數(shù)組中的數(shù)比較集中)用另一個數(shù)組去記錄原數(shù)組中每個元素(有序記錄)出現(xiàn)的次數(shù),然后用第二個數(shù)組來依次輸出。
基數(shù)排序:數(shù)組中個位相同的放一起,然后十位相同的放一起,.....,最后依次放入原數(shù)組中。
排序的目的是為了查找。