排序是每個軟件工程師和開發(fā)人員都需要掌握的技能。不僅要通過編程面試,還要對程序本身有一個全面的理解。不同的排序算法很好地展示了算法設計上如何強烈的影響程序的復雜度、運行速度和效率。
排序有很多種實現(xiàn)方法,比如冒泡排序、選擇排序、歸并排序、希爾排序、快速排序、插入排序、堆排序、基數(shù)排序等,今天就給大家介紹使用Python語言實現(xiàn)的其中4個排序算法。
1. 快速排序
首先要打亂序列順序 ,以防算法陷入最壞時間復雜度??焖倥判蚴褂谩胺侄沃钡姆椒?。
對于一串序列,首先從中選取一個數(shù),凡是小于這個數(shù)的值就被放在左邊一摞,凡是大于這個數(shù)的值就被放在右邊一摞。然后,繼續(xù)對左右兩摞進行快速排序。
直到進行快速排序的序列長度小于 2 (即序列中只有一個值或者空值)。
2. ?冒泡排序
冒泡排序(順序形式),從左向右,兩兩比較,如果左邊元素大于右邊,就交換兩個元素的位置。
其中,每一輪排序,序列中最大的元素浮動到最右面。也就是說,每一輪排序,至少確保有一個元素在正確的位置。
這樣接下來的循環(huán),就不需要考慮已經(jīng)排好序的元素了,每次內層循環(huán)次數(shù)都會減一。
其中,如果有一輪循環(huán)之后,次序并沒有交換,這時我們就可以停止循環(huán),得到我們想要的有序序列了。
3. 選擇排序
選擇排序,每次選擇當前序列的最小值,將其與當前序列的第一個元素交換位置,每迭代一次,當前序列長度減一。迭代結束,即可得到有序序列。
4.插入排序
插入排序的基本操作就是將一個數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個新的、個數(shù)加一的有序數(shù)據(jù),算法適用于少量數(shù)據(jù)的排序,時間復雜度為O(n^2)。是穩(wěn)定的排序方法。
插入算法把要排序的數(shù)組分成兩部分:第一部分包含了這個數(shù)組的所有元素,但將最后一個元素除外(讓數(shù)組多一個空間才有插入的位置),而第二部分就只包含這一個元素(即待插入元素)。在第一部分排序完成后,再將這個最后元素插入到已排好序的第一部分中。
以上,就是云和數(shù)據(jù)今天所講的4種Python排序方法,不知道你學會了嗎?快動手練習練習吧。