本人是純正的蒟蒻。
寫這些部落格目的是為了複習一些基礎知識,同時也幫助一下比我還要弱的蒟蒻(估計沒有)。
排序
排序有很多種,這裡先介紹幾種最基本,最簡單的。
一.插入排序(
主要思想:假設前面n個元素已經有序排列,現在要插入乙個元素,使這n+1個元素有序,先在原有序列中找到應該插入的位置,然後把這個位置的數及其後面的數都往後移動一位,這樣就空出了乙個位置,這個位置就是我們要插入的位置。
例如(從小到大)
原有序數列 1 3 6 7 10 15
對應位置 1 2 3 4 5 6
要插入乙個 8
經過比較發現 8>7且8<10(10是第乙個比8大的元素),所以8要插在7後面,10前面,7對應陣列中的下表是4
所以我們將4號位置後面的所有元素向後移動一位
即 1 3 6 7 x 10 15
1 2 3 4 5 6 7
x為要插入元素
最後將插入元素填入5號位置,就完成了一次插入。
偽**如下:
void charu()
{ for(int i=2;i<=n;i++) }
如果陣列中第乙個元素就比要插入元素大的話,整個陣列後移,插入元素為a[1];
注意
插入排序時間複雜度(n^2)
插入排序還算穩定。
未完
排序之插入排序
基本思想 每次將乙個待排序的記錄,按其關鍵字大小插入到前邊已經排好序的子陣列中的適當位置,知道全部記錄插入完成為止。分類 直接插入排序和希爾 shell 排序。一 直接插入排序 基本操作 將當前無序區的第乙個記錄r i 插入到有序區r 1.i 1 中適當的位置,使得r 1.i 變為新的有序區。每次使...
排序之插入排序
插入演算法 迴圈陣列,以指標資料為基值 並且記錄,通過和左側 右側 的迴圈比較,當比較值大於 小於 基值時 將大的值至後,指標繼續移動,比較,置換。直到遇到小於基值,或者到陣列邊界時截止,並且置換至首位。結束一次內迴圈,這是外迴圈的指標左側的是有序。class sort public static ...
7 插入排序之折半插入排序
7 折半插入排序 折半插入 考慮到插入第i個元素前面的i 1個元素是有序的,計算0 i 1的中間點,和i個元素進行比較,這樣完成了折半。然後不停地用上面的步驟,快速的找出第i個元素的位置。時間複雜度 折半插入排序比直接插入排序明顯減少了關鍵字之間的比較次數,但是移動次數是沒有改變。所以,折半插入排序...