zoukankan      html  css  js  c++  java
  • 排序算法----快速排序

    快速排序

    • 将列表中第一个元素设定为基准数字,赋值给mid变量,然后将整个列表中比基准小的数值放在基准的左侧,比基准到的数字放在基准右侧。然后将基准数字左右两侧的序列在根据此方法进行排放。
    • 定义两个指针,low指向最左侧,high指向最右侧
    • 然后对最右侧指针进行向左移动,移动法则是,如果指针指向的数值比基准小,则将指针指向的数字移动到基准数字原始的位置,否则继续移动指针。
    • 如果最右侧指针指向的数值移动到基准位置时,开始移动最左侧指针,将其向右移动,如果该指针指向的数值大于基准则将该数值移动到最右侧指针指向的位置,然后停止移动。
    • 如果左右侧指针重复则,将基准放入左右指针重复的位置,则基准左侧为比其小的数值,右侧为比其大的数值。

      

     1 #方式一:此方法理解简单,但是系统资源占用过大
     2 def quick_sort(int_list):
     3     if len(int_list) <= 1: return int_list
     4     # divide = int_list.pop()
     5     divide=int_list[-1]
     6     greater_list, lesser_list = [], []
     7     for element in int_list[:-1]:
     8         greater_list.append(element) if divide < element else lesser_list.append(element)
     9     return quick_sort(lesser_list) + [divide] + quick_sort(greater_list)  # 递归进行
    10 
    11 #方式二
    12 def quick_sort1(int_list, start, end):
    13     low = start
    14     high = end
    15     if low > high:
    16         return int_list
    17     divide = int_list[low]
    18     while low < high:
    19         while low < high:
    20             if int_list[high] < divide:
    21                 int_list[low] = int_list[high]
    22                 break
    23             else:
    24                 high -= 1
    25         while low < high:
    26             if int_list[low] > divide:
    27                 int_list[high] = int_list[low]
    28                 break
    29             else:
    30                 low += 1
    31 
    32     int_list[low] = divide  # 每次调用排好基数位置
    33     quick_sort1(int_list, start, low - 1)  # 对小于基数的部分进行同样排序操作
    34     quick_sort1(int_list, high + 1, end)  # 对大于基数的部分进行同样排序操作
    35 
    36     return int_list
    37 
    38 
    39 # 245,689,3454,123,90987,2,3,4
    40 if __name__ == '__main__':
    41     int_str = input("请输入逗号分割的整数>>>").strip()
    42     int_list = [int(i) for i in int_str.split(",")]
    43     print(quick_sort(int_list))
    44 
    45     # print(quick_sort1(int_list, 0, len(int_list) - 1))
  • 相关阅读:
    myeclipse-9.0安装svn客户端插件
    jquery中lhgdialog插件(一)
    Jquery之ShowLoading遮罩组件
    git 命令
    org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map
    在线压缩图片网址
    如何在知网下载外文文献
    Linux 常见命令
    在VIM 里面编辑和保存
    vi a.sh ABCD
  • 原文地址:https://www.cnblogs.com/open-yang/p/11367100.html
Copyright © 2011-2022 走看看