#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''=================================================
@Project -> File : sort_test
@IDE :PyCharm
@Author :zhangjun.xue
@Date :2019-09-23 11:17
@Desc :
=================================================='''
def bubbling_sort(data):
"""
冒泡排序
从前往后,依次比较相邻的两个数,把较大的数放到后面。
一次循环,可以在当前最末尾位置得到一个当前最大值。
:param data:
:return:
"""
for i in range(len(data)):
for j in range(len(data) - 1):
if li[i] < li[j]:
li[i], li[j] = li[j], li[i]
return data
def check_sort(data):
"""
选择排序
从数组中找到最小的元素,和第一个位置的元素互换。
从第二个位置开始,找到最小的元素,和第二个位置的元素互换。
........
直到选出array.length-1个较小元素,剩下的最大的元素自动排在最后一位。
:param data:
:return:
"""
for i in range(len(data)):
for j in range(i+1, len(data)):
if data[i] > data[j]:
data[i], data[j] = data[j], data[i]
return data
def quick_sort(b):
"""
快速排序
:param b:
:return:
"""
if len(b) < 2:
return b
# 选取基准,随便选哪个都可以,选中间的便于理解
mid = b[len(b) // 2]
# 定义基准值左右两个数列
left, right = [], []
# 从原始数组中移除基准值
b.remove(mid)
for item in b:
# 大于基准值放右边
if item >= mid:
right.append(item)
else:
# 小于基准值放左边
left.append(item)
# 使用迭代进行比较
return quick_sort(left) + [mid] + quick_sort(right)
if __name__ == "__main__":
print '--- start ---'
li = [6, 5, 3, 2, 4, 1]
print 'bubbling_sort = ', bubbling_sort(li)
print 'check_sort = ', check_sort(li)
print 'quick_sort = ', quick_sort(li)