python——,冒泡、归并、快排

女爷i 2022-04-17 02:54 317阅读 0赞
  1. array=[2,8,7,1,3,5,6,4]
  2. def quick_sort(array, l, r):
  3. if l < r:
  4. q = partition(array, l, r)
  5. quick_sort(array, l, q - 1)
  6. quick_sort(array, q + 1, r)
  7. def partition(array, l, r):
  8. x = array[r]
  9. i = l - 1
  10. for j in range(l, r):
  11. if array[j] <= x:
  12. i += 1
  13. array[i], array[j] = array[j], array[i]
  14. array[i + 1], array[r] = array[r], array[i + 1]
  15. return i + 1
  16. quick_sort(array,1,len(array)-1)
  17. print(array)
  18. array=[2,8,7,1,3,5,6,4]
  19. def quick_sort(array, l, r):
  20. if l < r:
  21. q = partition(array, l, r)
  22. quick_sort(array, l, q - 1)
  23. quick_sort(array, q + 1, r)
  24. def partition(array, l, r):
  25. x = array[r]
  26. i = l - 1
  27. for j in range(l, r):
  28. if array[j] <= x:
  29. i += 1
  30. array[i], array[j] = array[j], array[i]
  31. array[i + 1], array[r] = array[r], array[i+1]
  32. return i + 1
  33. quick_sort(array,0,len(array)-1)
  34. print(array)
  35. mylist = [49,38,65,97,76,13,27,59]
  36. def quick_sort(mylist,start,end):
  37. if start<end:
  38. i,j=start,end
  39. base = mylist[i]
  40. while i<j:
  41. while(i<j) and (mylist[j]>=base):
  42. j=j-1
  43. mylist[i]=mylist[j]
  44. while(i<j) and (mylist[i]<=base):
  45. i=i+1
  46. mylist[j]=mylist[i]
  47. mylist[i]=base
  48. quick_sort(mylist,start,i-1)
  49. quick_sort(mylist,i+1,end)
  50. return mylist
  51. quick_sort(mylist,0,len(mylist)-1)
  52. print(mylist)

https://www.cnblogs.com/Lin-Yi/p/7309143.html

归并排序:

  1. def merge_sort(li):
  2. if len(li)==1:
  3. return li
  4. mid = len(li)//2
  5. left = li[:mid]
  6. right = li[mid:]
  7. le=merge_sort(left)
  8. rl=merge_sort(right)
  9. return merge(le,rl)
  10. def merge(left,right):
  11. result=[]
  12. while len(left)>0 and len(right)>0:
  13. if left[0]<=right[0]:
  14. result.append(left.pop(0))
  15. else:
  16. result.append(right.pop(0))
  17. result+= left
  18. result+= right
  19. return result
  20. li = [2,8,4,1,3,5,6,7]
  21. li2 = merge_sort(li)
  22. print(li2)

发表评论

表情:
评论列表 (有 0 条评论,317人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python

    快排:讲序列分成左右两部分,在每个部分中选一个基准,比基准小的放到它前面,比基准大的放到它后面。 左右两个指针,同时向中间移动,i++,j–, 实现思路: 分成两部分需