使用python實現8大排序演算法-快速排序

來源:互聯網
上載者:User
快速排序的基本思想:

通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序。

例:

arr = [49,38,04,97,76,13,27,49,55,65],設定第一位49為key值,從右向左找到比key值小的數,把找到的數賦值給第一位元;

arr = [27,38,04,97,76,13,27,49,55,65],然後從左第一位向右找到比key值大的數,把找到的數賦值給上個從右向左找到的數;

arr = [27,38,04,97,76,13,97,49,55,65],然後從右向左,從左向右,直到left=right,跳出迴圈,並把key值賦值給些索引值。最後再對兩邊的分組進行遞迴。

代碼:

def quick_sort(lists, left, right):      #快速排序      if left >= right:  #當遞迴調用的分組為1個數時返回列表          return lists      key = lists[left]  #儲存key值,在一輪調用結束時,存到中間值      low = left      high = right  #供遞迴調用時使用      while left < right:  #通過下面兩個迴圈依次交替賦值並使key值兩側為大小分組          while left < right and lists[right] >= key:                right -= 1          lists[left] = lists[right]          while left < right and lists[left] <= key:              left += 1          lists[right] = lists[left]      lists[right] = key      quick_sort(lists, low, left-1)  #對key值左側進行排序分組      quick_sort(lists, left+1, high)  #對key值右側進行排序分組      return lists
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.