1 #!/usr/bin/env python
2 # 冒泡排序
3 def bubbleSort(nums):
4 count = len(nums) #需要排序的列表长度
5 for i in range(count): #这个循环负责设置冒泡排序进行的次数(比如说n个数,则只要进行n-1次冒泡,就可以把这个n个数排序好,对吧)
6 for j in range(count-i-1): # -1 是因为每次比对的都 是i 与i +1,不减1的话,最后一次对比会超出list 获取范围,-j是因为,每一次大的循环就代表排序好了一个最大值,放在了列表最后面,下次大循环就不用再运算已经排序好了的值了
7 if lst[j] > lst[j+1]:
8 lst[j],lst[j+1] = lst[j+1],lst[j] #如果前面的值大于后面的值,就交换两个数值的位置
9 return nums
10
11 lst = [12,32,-9,33,0,-3,88,37,98,2]
12 print(lst)
13 print(bubbleSort(lst))
1 #!/usr/bin/env python
2 # 选择排序
3 def selectionSort(nums):
4 count = len(nums) #排序数组的长度
5 for i in range(count-1):
6 min_index = i
7 for j in range(i+1,count):
8 if nums[j] < nums[min_index]:
9 min_index = j
10 nums[min_index],nums[i] = nums[i],nums[min_index]
11 return nums
12 lst = [12, 32, -9, 33, 0, -3, 88, 37, 98, 2]
13 print(lst)
14 print(selectionSort(lst))
1 #!/usr/bin/env python
2 #快速排序
3 def quickSort(nums):
4 if len(nums) < 2:
5 return nums #递归退出程序的出口
6 mid = nums[len(nums) // 2] #确定中间值得位置,并以该值为基准值
7 left, right = [] ,[] #分布创建两个列表,左边用来保存小于基准值得值,右边用来保存大于基准值得值
8 nums.remove(mid) #删除需要排序中的基准值
9 for item in nums:
10 if item >= mid:
11 right.append(item) #大于基准值添加到右边的列表
12 else:
13 left.append(item) #小于基准值添加到左边的列表
14 return quickSort(left)+[mid]+quickSort(right) #返回递归调用的结果
15 lst = [12, 32, -9, 33, 0, -3, 88, 37, 98, 2]
16 print(lst)
17 print(quickSort(lst))
1 #!/usr/bin/env python
2 # 插入排序
3 def insertSort(nums):
4 length = len(nums)
5 for i in range(1,length):
6 j = i - 1
7 for j in range(i):
8 if nums[j] > nums[i]:
9 nums[j],nums[i] = nums[i],nums[j]
10 return nums
11 lst = [12, 32, -9, 33, 0, -3, 88, 37, 98, 2]
12 print(lst)
13 print(insertSort(lst))