zoukankan      html  css  js  c++  java
  • python实现快速排序

    快速排序在于快,大概思想是:先使用一个数值作为中间值,通过第一次排序将数组分为两部分,左边的都比这个数值小, 右边的都比这个数值大,再利用递归将这两部分数组进行同样的排序:

     1 def quick_sort(li, start, end):
     2     # 递归结束条件:
     3     if start >= end:
     4         return
     5     # 左边第一个索引
     6     left = start
     7     # 右边最后一个索引
     8     right = end
     9     # 把第一个数作为中间值
    10     mid = li[left]
    11     # 首先右边的索引往左移动,当left<right 的时候和right的值大于mid值时才执行循环
    12     while left < right:
    13         while left < right and li[right] >= mid:
    14             right -= 1
    15         li[left] = li[right]
    16         while left < right and li[left] <= mid:
    17             left += 1
    18         li[right] = li[left]
    19     li[left] = mid
    20     # 此时,mid左边的数都小于mid, mid右边的数都大于mid
    21     # 将两边的数再通过递归的方式进行排序
    22     quick_sort(li, start, left - 1)
    23     quick_sort(li, left + 1, end)
    24 
    25 
    26 if __name__ == '__main__':
    27     li = [4, 3, 5, 7, 9, 2, 1, 6, 8]
    28     quick_sort(li, 0, len(li) - 1)
    29     print(li)

    萧伯纳说:“你有一个苹果,我有一个苹果,彼此交换一下,我们彼此仍然是各有一个苹果;但是你有一种思,我有一种思想,彼此交换一下,才发现从不同角度看到的问题远比本身更深刻,所以多交流多沟通是我们提高自我能力的一种方式!!!

    如果你有更好更简单的方法,请一定评论谢谢!!!

  • 相关阅读:
    Spring.NET学习笔记一。
    Spring.NET学习笔记三(log4net的配置)
    C# 中virtual,override,new 的区别与用法(转载)
    java中的输入输出(转载)
    C# checked与unchecked用法
    C# string学习(转载)
    C# TextBox中的Validating与Validated事件
    java代理模式 (转)
    Jquery好友选择器
    回溯与递归
  • 原文地址:https://www.cnblogs.com/logn2/p/8111227.html
Copyright © 2011-2022 走看看