本書對排序類演算法有乙個模板,包括了以下幾種方法:
(1)sort():這個方法裡面實現的就是排序的演算法
(2)less():這個方法裡是利用了comparable介面裡的compareto方法,其中compareto方法對於本物件與傳入的比較物件小於,等於,大於,分別返回負數,0,正數
這個方法如果compareto方法結果為負數就返回true,否則返回false
(3)exch():這個方法就是exchange,交換,用的傳統方法,先找個temp,然後三者交換
(4)show():將陣列裡的元素進行列印
(5)main():
模板具體如下
觀察之後可以發現:public class selection
private static boolean less(comparablev, comparablew)
private static void exch(comparable a, int i, int j)
private static void show(comparable a)
} public static boolean issorted(comparable a)
return true;
} public static void main(string args) throws filenotfoundexception ;
sort(a);
assert issorted(a);
show(a);
}}
排序演算法的模板傳入的引數規定了,都得是實現了comparable介面的資料型別,這樣就可以直接按照各自的資料比較習慣進行排序了
v.compareto(w)<0這樣的**,如果v和w無法進行比較,或者兩者之一有乙個null,則v.compareto(w)會丟擲乙個異常。
《演算法(第四版)》排序 希爾排序
由 插入排序 可知,它是一種不穩定的演算法,當序列已經接近有序時,排序速度較快,但是如果最小的在最後面,那可能需要最小的交換了n 1次才能換到最前面。希爾排序在插入排序的基礎上進行了改進,交換不相鄰的元素,以對陣列的區域性進行排序,並最終用插入排序將區域性有序的陣列排序,具體做法如下。1.假設陣列長...
《演算法(第四版)》排序 堆排序
1.什麼是堆?講堆排序之前,先了解一下什麼是堆。堆其實相當於一種資料結構,它的本質是一種陣列物件,但是它裡面的內同又是一顆完全二叉樹結構,它的特點是父節點的值大於 或小於 兩個子節點的值,常常用於優先佇列 堆排序等。堆在陣列中的索引有如下的特點。陣列索引為k的元素,它的父節點的索引為 k 2 下取整...
插入排序(演算法第四版)
原理闡述 就像打牌一樣,拿到手上的是無序的牌,從第二張開始,將牌一張一張與前面的比較,遇到第乙個比自己小的,就插在它後面,依次執行到最後一張,結束後,就排好序了 note 3 5 2 1 以2為例 3 2 5 1 2 3 5 1 2 3 1 5 2 1 3 5 1 2 3 5 實現 package ...