码迷,mamicode.com
首页 > 编程语言 > 详细

使用python实现冒泡排序和快速排序

时间:2017-09-05 23:00:24      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:style   oop   回调   def   bubble   lis   span   ret   交换   

 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实现冒泡排序和快速排序

标签:style   oop   回调   def   bubble   lis   span   ret   交换   

原文地址:http://www.cnblogs.com/byron0918/p/7482220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!