004 排序(冒泡快排)
生活随笔
收集整理的這篇文章主要介紹了
004 排序(冒泡快排)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、冒泡排序(Bubble Sort)
冒泡排序是一種交換排序。
基本思想:兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。
① 算法實現
- 嵌套循環。i=0,j從后往前循環,逐個與前一個值作比較,將較小值交換到前面,直到找到最小值放在了第1的位置,接著繼續下一輪循環(i += 1)
- 若某次循環(i)中已無數據交換,則不需要繼續下輪循環:
設置flag。若flag=True,則說明前一輪循環中仍有數據交換,則繼續下一輪循環;若flag=False,則說明前一輪循環已無數據交換,可以跳出大循環。
② 復雜度
當最好的情況,也就是要排序的序列本身就是有序的,根據優化過的算法可推斷出是n-1次的比較;
當最壞的情況,即待排序列是逆序的情況,則為1+2+3+...+(n-1) = n(n-1)/2 次的比較。
則總的時間復雜度為 O(n2)。
2、快速排序(Quick Sort)
基本思想:通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序的目的。
① 算法實現
QuickCore函數,其實就是將選取的pivotkey不斷交換,將比它小的換到它的左邊,比它大的換到它的右邊,它也在交換中不斷更改自己的位置,直到完全滿足這個要求為止。
② 復雜度
O(nlogn)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的004 排序(冒泡快排)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL操作实战(三):表联结
- 下一篇: sql语句练习(一)