各種排序演算法
穩定:直二冒歸基
插入排序(直接插入排序):左邊都是排好序的,右邊的依次和左邊的比較,插入到左邊合適的位置。
它的基本思想是將乙個記錄插入到已經排好序的有序表中。當待排序陣列是有序時,是最優的情況,只需當前數跟前乙個數比較一下就可以了
最壞的情況是待排序陣列是逆序。
歸併排序(二路歸併):將序列每相鄰兩個數字進行歸併操作。開始2個一組排好序。再把排好序的這兩個和另外兩個合成一組排序。
這樣的排序方法經常用於多個有序的資料檔案歸併成乙個有序的資料檔案。歸併排序的演算法比較簡單。
一般的初次取序列的一半為增量,以後每次減半,直到增量為1。是將整個有序序列分割成若干小的子串行分別進行插入排序。
插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率。
但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位。
氣泡排序依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從z到a)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是 o(n²) 的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不占用額外的記憶體空間。
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
重複第二步,直到所有元素均排序完畢。
A 演算法的一些總結
看拓撲狀態監控的一篇文章時發現提到了a 演算法,他的目的是提取拓撲中的重要拓撲資訊來進行監控,進而減少控制資訊消耗。覺得這個想法不錯,但具體a 演算法是怎麼樣的呢?於是找了一下資料,覺得下面這篇帶著例項講的不錯,比較直觀,雖說博主也是借他山之石吧,但還是總結歸納的不錯,排版也很清晰,點讚。理解a 演...
對SPEA演算法的一些總結
spea以及spea2也算是和nsgaii 可以說得上並列的有名的多目標問題的優化演算法了。並且nsgaii,spea,以及spea2會經常拿來和自己的演算法來做對比,在寫 的時候。今天特意複習了下spea,下面總結一下這個演算法,主要是描述一下流程,如果到最後還有啥沒說全的就再補充下 1 首先初始...
K D樹演算法的一些總結
在2016年acm icpc青島站的比賽中,一道k d樹問題成為了金銀牌的分界線,最後由我們隊乙個強力隊友寫出了該題,其實那題本來該由我負責的,都怪我學藝不精。k d樹 k dimensional樹的簡稱 是一種分割k維資料空間的資料結構。主要應用於多維空間關鍵資料的搜尋 如 範圍搜尋和最近鄰搜尋 ...