排序,就是重新排列表中的元素,使表中的元素滿足按關鍵字遞增或遞減的過程。為了查詢方便,通常要求計算機中的表是按關鍵字有序的。排序的確切定義如下:
輸入:n個記錄r1r2……rn,對應的關鍵字為k1k2……kn。
輸出:輸入序列的乙個重排:r1『r2』……rn『,使得k1'<=k2'<=……<=kn',(其中,「<="可以換算成其他的比較大小的符號)
演算法的穩定性:若待排序表中有兩個元素ri和rj,其對應的關鍵字為k1,k2,且在排序前ri在rj的前面,若使用某一排序演算法後,ri仍然在rj的前面,則稱這個排序演算法是穩定的,否則稱排序演算法是不穩定的。需要注意的是,演算法是否具有穩定性並不能衡量乙個演算法的優劣,它主要是對演算法的性質進行描述。
注意:對於不穩定的排序演算法,只需要舉出一組關鍵字的例項,說明它的不穩定性即可。
在排序的過程中,根據資料元素是否完全在記憶體中,可將排序演算法分為兩類:內部排序,是指在排序期間元素全部放在記憶體中的排序;外部排序:是指在排序期間元素無法全部同時存放在記憶體中,必須在排序的過程中根據要求不斷地在內、外存之間移動的排序。
一般情況下:內部排序演算法在執行過程中都要進行兩種操作:比較和移動。通過比較兩個關鍵字,確定對應元素的前後關係,然後通過移動元素以達到有序。當然,並非所有的內部排序演算法都要基於比較操作,事實上,基數排序就不基於比較。
內部排序演算法的效能取決於演算法的時間複雜度和空間複雜度,而時間複雜度一般也是由比較和移動次數決定的。
排序的定義
1 排序 就是重新排序列表中的元素,使表中的元素滿足按關鍵字遞增或遞減的過程。為了 查詢方便,通常要求計算機中的表是按關鍵字有序的。演算法的穩定性 如果待排序表中有兩個元素 a 和 b 其對應的關鍵字 a1 b1 且在排序前 a 在 b 的前面,如果使用某乙個演算法排序後,a 仍然在 b 的前面,則...
Java Map 排序定義
1 一般的map定義 mapmap new hashmap 這種map的定義,裡面的資料是亂序的,沒有順序規則可依 2 保持有序的map定義 mapmap new linkedhashmap 鍊錶結構的hashmap,是有序的,put進去的資料順序是怎樣,出來的順序也是那樣,不會打亂裡面資料的順序 ...
陣列的 定義 排序 查詢
陣列的定義 資料型別 變數名 初始值 定義方法有三種 陣列宣告方式一 int array new int 陣列的元素個數 陣列宣告方式二 長度和元素都給了 int array new int 陣列的宣告方式三 語法糖 int array1 說到陣列牽扯到堆記憶體和棧記憶體,下面簡單講一下堆記憶體和棧...