被leetcode虐的太惨了,写个排序算法找找感觉。
本文写三个吧。
冒泡排序
选择排序
快速排序
好了
直接写代码吧。
class SortMethod:
def bubble_sort(self, nums):
n = len(nums)
for i in range(n): # n次操作
for j in range(1, n-i):
if nums[j] < nums[j-1]:
nums[j], nums[j-1] = nums[j-1], nums[j]
def select_sort(self, nums):
n = len(nums)
for i in range(n):
maxi = 0
for j in range(n-i):
if nums[j] > nums[maxi]:
maxi = j
nums[maxi], nums[n-i-1] = nums[n-i-1], nums[maxi]
def quick_sort(self, nums, l, r):
if l>=r:
return
flag = self.partition(nums, l, r)
self.quick_sort(nums, l, flag-1)
self.quick_sort(nums, flag+1, r)
def partition(self, nums, l, r):
flag = l-1
while l < r:
if nums[l] < nums[r]:
nums[l], nums[flag+1] = nums[flag+1], nums[l]
flag += 1
l += 1
nums[r], nums[flag+1] = nums[flag+1], nums[r]
return flag+1
# 注意:都是in-place操作
sortway = SortMethod()
nums = [1,8,9,2,3,4,5,6,5,4,3,2,7,6,5,4]
sortway.bubble_sort(nums)
print('bubble_sort:', nums)
nums = [1,8,9,2,3,4,5,6,5,4,3,2,7,6,5,4]
sortway.select_sort(nums)
print('select_sort:', nums)
nums = [1,8,9,2,3,4,5,6,5,4,3,2,7,6,5,4]
sortway.quick_sort(nums, 0, len(nums)-1)
print('quick_sort :', nums)
多看,多写。别无他法,唯手熟尔。
好了,今天就到这里了,就这样吧。