zoukankan      html  css  js  c++  java
  • 经典排序——快速排序

    快速排序:快速排序是经典的排序算法之一,它是冒泡排序的升级版。

    快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

    ——百度百科(快速排序算法)

    首先观察每一趟排序的效果:

    原始序列:[84, 17, 26, 30, 62, 83, 5, 79, 45, 85]
    [45, 17, 26, 30, 62, 83, 5, 79, 84, 85]
    [5, 17, 26, 30, 45, 83, 62, 79, 84, 85]
    [5, 17, 26, 30, 45, 83, 62, 79, 84, 85]
    [5, 17, 26, 30, 45, 83, 62, 79, 84, 85]
    [5, 17, 26, 30, 45, 83, 62, 79, 84, 85]
    [5, 17, 26, 30, 45, 83, 62, 79, 84, 85]
    [5, 17, 26, 30, 45, 79, 62, 83, 84, 85]
    [5, 17, 26, 30, 45, 62, 79, 83, 84, 85]
    [5, 17, 26, 30, 45, 62, 79, 83, 84, 85]
    [5, 17, 26, 30, 45, 62, 79, 83, 84, 85]
    最终结果:[5, 17, 26, 30, 45, 62, 79, 83, 84, 85]

    python代码实现:

     1 from random import randint
     2 
     3 l = [randint(0, 100) for x in range(10)]
     4 print l
     5 
     6 def q_sort(l, left, right):
     7     if left > right:
     8         return 
     9     i = left
    10     j = right
    11     flag = l[left]
    12     while i < j:
    13         while i < j and flag <= l[j]:
    14             j = j - 1
    15         l[i] = l[j]
    16         while i < j and flag >= l[i]:
    17             i = i + 1
    18         l[j] = l[i]
    19     l[i] = flag
    20     print l
    21     q_sort(l, left, i - 1)
    22     q_sort(l, i + 1, right)
    23     return l
    24 
    25 print q_sort(l, 0, len(l) - 1)
  • 相关阅读:
    元素和容器, Model and View
    KeyboardHook in C#
    项目步骤
    对编程的思考
    Web开发中使用数据库的3种方式
    动态得到属性的名字
    WPF Databinding examples
    【SPOJ】220 Relevant Phrases of Annihilation
    【FOJ】2075 Substring
    【UVa】760 DNA Sequencing
  • 原文地址:https://www.cnblogs.com/shiyu404/p/5965219.html
Copyright © 2011-2022 走看看