1. 程式人生 > >使用python實現冒泡排序和快速排序

使用python實現冒泡排序和快速排序

code def bubble python實現 style range 交換 冒泡排序 sdn

 1 def bubble(arr):
 2     """冒泡排序"""
 3     loop = len(arr) - 1
 4     if loop > 0:
 5         for l in range(loop):
 6             for i in range(loop - l):
 7                 if arr[i] > arr[i + 1]:
 8                     arr[i], arr[i + 1] = arr[i + 1], arr[i]
 9     return arr
10 
11 
12 def
split_array(nums, left, right): # 返回調整後基準數的位置 13 key = nums[left] # nums[left]就是第一個坑 14 while left < right: 15 # right下標位置開始,向左邊遍歷,查找不大於基準數的元素 16 while left < right and nums[right] >= key: 17 right -= 1 18 if left < right: # 找到小於準基數key的元素,然後交換nums[left],nums[right]
19 nums[left], nums[right] = nums[right], nums[left] 20 else: # left〉=right 跳出循環 21 break 22 # left下標位置開始,向右邊遍歷,查找不小於基準數的元素 23 while left < right and nums[left] < key: 24 left += 1 25 if left < right: # 找到比基準數大的元素,然後交換nums[left],nums[right]
26 nums[right], nums[left] = nums[left], nums[right] 27 else: # left〉=right 跳出循環 28 break 29 nums[left] = key 30 return left # 此時left==right 所以返回right也是可以的 31 32 33 def quick_sort(nums, left, right): 34 if left < right: 35 key_index = split_array(nums, left, right) 36 quick_sort(nums, left, key_index - 1) 37 quick_sort(nums, key_index + 1, right) 38 39 40 if __name__ == "__main__": 41 from random import randint 42 nums = list(randint(10, 99) for i in range(100)) 43 print(nums) 44 quick_sort(nums, 0, len(nums) - 1) 45 print(nums)

快速排序的理解可以參見http://blog.csdn.net/morewindows/article/details/6684558 寫的很好

使用python實現冒泡排序和快速排序