常用排序演算法對比
一、內部排序:指待排序記錄存放在計算機隨機儲存器中進行的排序過程;
二、外部排序:指待排序記錄的數量很大,以致記憶體一次不能容納全部記錄,在排序過程中尚需對外存進行訪問的排序過程
三、排序方法穩定和不穩定
四、內部排序常用方法
1.插入排序
(1)直接插入排序
基本思想:假設待排序的記錄存放在陣列r[1..n]中。初始時,r[1]自成1個有序區,無序區為r[2..n]。從i=2起直至i=n為止,依次將r[i]插入當前的有序區r[1..i-1]中,生成含n個記錄的有序區。
哨兵的作用:演算法中引進的附加記錄r[0]稱監視哨或哨兵(sentinel)。
哨兵有兩個作用:
① 進人查詢(插入位置)迴圈之前,它儲存了r[i]的副本,使不致於因記錄後移而丟失r[i]的內容;
② 它的主要作用是:在查詢迴圈中"監視"下標變數j是否越界。一旦越界(即j=0),因為r[0].key和自己比較,迴圈判定條件不成立使得查詢迴圈結束,從而避免了在該迴圈內的每一次均要檢測j是否越界(即省略了迴圈判定條件"j>=1")。
時間複雜度 o(n
2)(2)折半插入排序:和直接插入排序相比,其減少了關鍵字的比較次數,而記錄的移動次數不編。其演算法時間複雜度仍為 o(n
2)。(3)2-路插入排序:思想是引入乙個n個記錄得輔助空間,減少記錄移動的次數。
(4)表插入排序:引入新的資料結構-陣列靜態鍊錶,以修改2n次指標值代替移動記錄
(5)希爾排序
2.快速排序
(1) 氣泡排序 o(n
2)(2)
快速排序(遞迴的思想)
3.選擇排序
(1) 簡單選擇排序
(2) 樹型選擇排序
(3) 堆排序
4.歸併排序
5.基排序
ArrayList原始碼 有待補充
從原始碼中可以看出 arraylist 初始化容量為 10 擴容 add e e 原大小的 1.5 倍 待補充 進入list 可以看到 list有4個特有方法 均是通過 下標 進行操作 remove 返回刪除元素的value 另外的 add 跟 remove 是實現於 collection 返回值均...
vim 常用的命令 有待補充
命令 說明yy 複製當前行 nyy n為數字 游標位於當前行,向下複製n行 含當前行 dd刪除當前行 剪下 ndd n為數字 刪除當前行,及向下n行 剪下 d刪除至行尾p貼上 i在游標前插入 a在游標後插入 a在行末插入 x刪除後面的字元 nx n為數字 刪除後面的n個字元 x刪除前乙個字元 esc...
File類常用方法總結(有待補充)
file類代表乙個特定的檔案或者目錄,並提供了若干方法對該檔案或目錄進行操作。file類構造方法 分別使用三種構造方法建立物件如下 file file newfile f yunwendang t.txt if file.isfile else file newfile f yunwendang t...