• 常见排序算法-快排


    快速排序

    算法步骤:

    首先,从数列中挑出一个元素,作为基准值

    然后重新排序数列,将比基准值小的元素摆放在基准前面,比基准值大的摆在基准的后面(相同的数可以到任一边)。

    再递归地把小于基准值元素的子数列和大于基准值元素的子数列按照同样的方法排序。

    递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。

    代码:

     1 '快排中的挖坑法'
     2 def quick_sort033(array,start,end):
     3     if start >= end:
     4         return
     5     mid = array[start]
     6     left=start
     7     right=end
     8     while left<right:
     9         while left<right and array[right]>=mid:
    10             right-=1
    11         array[left]=array[right]
    12         while left < right and array[left]<=mid:
    13             left+=1
    14         array[right]=array[left]
    15     array[left]=mid
    16     quick_sort033(array,start,left-1)
    17     quick_sort033(array,left+1,end)
    18 
    19 "*交换指针法********************************************************"
    20 
    21 def quick_sort3(arr,startIndex,endIndex):# 递归结束条件:startIndex大等于endIndex的时候
    22     if startIndex >= endIndex:
    23         return
    24     pivot = arr[startIndex]
    25     left = startIndex
    26     right = endIndex
    27     while left != right:
    28         while left < right and arr[right] > pivot:
    29             right-=1
    30         while left < right and arr[left] <= pivot:
    31             left += 1
    32         if left < right:
    33             p = arr[left]
    34             arr[left] = arr[right]
    35             arr[right] = p
    36     p = arr[left]
    37     arr[left] = arr[startIndex]
    38     arr[startIndex] = p
    39 
    40     quick_sort3(arr, startIndex, left -1)
    41     quick_sort3(arr, left +1, endIndex)
    42 
    43 if __name__ == '__main__':
    44         # array1 = [2, 1, 6, 3, 5]
    45         array1 = [5, 8, 9, 17, 6, 21, 3, 1, 4]
    46         quick_sort3(array1, 0, len(array1) - 1)
    47         print(array1)
    48 
    49         # if  __name__=="__main__":
    50 #     lists=[5, 8, 9, 7, 6, 2, 3, 1, 4]
    51 #     print ( '排序前序列为:')
    52 #     for  i  in  (lists):
    53 #         print ( i,end=' ')
    54 #     print  ('
    排序后结果为:' )
    55 #     for  i  in  (quick_sort2(lists,0,len(lists)-1)):
    56 #         print (i,end=' ')
  • 相关阅读:
    【JavaP6大纲】Java基础篇:为什么jdk8以后HashMap会使用红黑树优化?
    【JavaP6大纲】Java基础篇:HashMap加载因子为什么是0.75?
    【JavaP6大纲】Zookeeper篇:选举机制
    就是要幸福(1)严于律人
    天真的童年
    闲言碎语话心得垃圾工作
    镜花水月
    就是要幸福(3)言行自由
    五年
    爸爸我给你捂捂手
  • 原文地址:https://www.cnblogs.com/wanrongshu/p/12712916.html
Copyright © 2020-2023  润新知