我的個人網站:https://m.theeye.tech/
前端交流群:1056993061
一、直接插入排序(內部排序、O(n2)、穩定)
原理:從待排序的數中選出一個來,插入到前面的合適位置。
二、選擇排序(O(n2)、不穩定)
與直接插入排序正好相反,選擇排序是從待排序的數中選出最小的放在已經排好的后面,這個算法選數耗時。
三、快速排序(O(nlogn)、不穩定)
快速排序簡稱快排,是一種比較快的排序,適合基本無序的數據,為什么這么說呢?下面我說下快排的思路:
設置兩個指針:i和j,分別指向第一個和最后一個,i像后移動,j向前移動,選第一個數為標准(一般這樣做,當然快排的關鍵就是這個“標准”的選取),從后面開始,找到第一個比標准小的數,互換位置,然后再從前面,找到第一個比標准大的數,互換位置,第一趟的結果就是標准左邊的都小於標准,右邊的都大於標准(但不一定有序),分成兩撥后,繼續遞歸的使用上述方法,最終有序!
四、冒泡排序(穩定、基本有序可達O(n),最壞情況為O(n2))
冒泡排序是一種很簡單,不論是理解還是時間起來都比較容易的一種排序算法,思路簡單:小的數一點一點向前起泡,最終有序。
五、歸並排序
歸並排序是建立在歸並操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。
首先考慮下如何將將二個有序數列合並。這個非常簡單,只要從比較二個數列的第一個數,誰小就先取誰,取了后就在對應數列中刪除這個數。然后再進行比較,如果有數列為空,那直接將另一個數列的數據依次取出即可