Python之排序算法:快速排序与冒泡排序

  入坑(简称IT)这一行也有些年头了,但自老师讲课提过排序算法后几乎再也没写过排序算法,当然这也没有什么问题,实际的排序大多是将数据从数据库取出来前在数据库中就已经做好排序了,当然这个排序是SQL范畴的,如果真的需要在代码中排序也有对应的工具类来处理,就比如有Java中有Array.sort()来排列Array(数组类型),功能虽说有限制,但也免去了撸码的时间,嗯,不用写的大好处就是减少了开发时间,当然也增加了喝咖啡、网购的时间~

Python之排序算法:快速排序与冒泡排序

闲言多废话,先展示下快速排序的动态图再出代码,方便理解:

Python之排序算法:快速排序与冒泡排序

(上图是从维基百科中抓取的,包括本节所讲所的冒泡排序也是维基百科的)

  嗯,酷酷的时间到了

Python之排序算法:快速排序与冒泡排序

,先我大概讲下快速排序

    A>先取一个数(一般是第一个数)作为参照的基准值

    B>将待排序的数组分两边,一左一右分别指向数组的两边

    C>左右两边分别向中间移,所指的数值大于基准值的向基准值右边放(如果是右边所指的值就挪动指向的位置,值不动),左边也一样

    D>将基准位置两边的值分别排序(一般是递归调用)

好了,以上大概就是快速排序的的一半步骤,如有不懂之处,建议顺着代码来推测快速排序的整个过程,并不难

Python之排序算法:快速排序与冒泡排序

1 #!/usr/bin/env Python 2 #快速排序法 3 def quickSort(arr,_l,_r): 4 l,r,t=_l,_r,0 5 if l <= r: 6 t=arr[_l] #基准参数 7 while(l<r): 8 #当右边的值大于基准参数时,右值向左挪一(位置和值) 9 while l<r and arr[r]>=t: 10 r=r-1 11 arr[l]=arr[r] #右值挪到左值的位置 12 # 当左边的值小于基准参数时,右值向左挪一(位置和值) 13 while l<r and arr[l]<=t: 14 l=l+1 15 arr[r]=arr[l] #左值放入右值的位置 16 \'\'\' 17 当前一轮排完后将基准参数放入 18 将基准值左右两边的数值分别放入排序(递归调用) 19 \'\'\' 20 arr[r]=t #基准参数归位 21 22 quickSort(arr,_l,l-1) #基准位置左侧数据排序 23 quickSort(arr,l+1,_r) #基准位置右侧数据排序 24 25 i=[23,1,6,77,8,-11,100,11.1,99,24,21] 26 print ("排序之前") 27 print (i) 28 print ("排序之后") 29 quickSort(i,0,len(i)-1) 30 print (i) 31 32 ==========以下是控制台输出=========== 33 34 排序之前 35 [23, 1, 6, 77, 8, -11, 100, 11.1, 99, 24, 21] 36 排序之后 37 [-11, 1, 6, 8, 11.1, 21, 23, 24, 77, 99, 100]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwwfg.html