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

排序算法

时间:2018-04-16 14:39:40      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:Python

一、经典冒泡法。

1、初始实现:

lst = [9,5,1,2,6]
length = len(lst)
for i in range(length):
    for j in range(length-1-i):
        if lst[j] > lst[j+1]:
                st[j], lst[j+1] = lst[j+1], lst[j]
    print(lst)

2、优化实现:
    
lst = [9,5,1,2,6]
length = len(lst)
for i in range(length):
    flag = False
    for j in range(length-1-i):
        if lst[j] > lst[j+1]:
            lst[j], lst[j+1] = lst[j+1], lst[j]
            flag = True
    if not flag:
        break
print(lst)


二、简单选择排序

1、一元简单选择排序

lst = [1,3,6,5,2,4,7,9]
length = len [lst]
for i in range(length):
    maxindex = i
    for j in range(i+1,length):
        if lst[j] > lst[i]:
            maxindex = j
    if i != maxindex:
        lst[i], lst[maxindex] = lst[maxindex], lst[i]
print(lst)

2、二元简单选择排序

lst = [1,3,6,5,2,4,7,9]
length = len(lst)
for i in range(length//2): # 两边一起排序,所以少一半
    maxindex = i
    minindex = -i-1或 length-1-i
    minorigin = minindex
    for j in range(i+1,length-i): # 每次左右固定一个,就少比较1个
        if lst[j] > lst[maxindex]:
            maxindex = j
        if lst[-j-1或 length-1-j] < lst[minindex]:
            minindex = -j-1 或 length-1-j
    if lst[maxindex] == lst[minindex]: # 元素全相同
        break
    if i != maxindex:
        lst[i], lst[maxindex] = lst[maxindex], lst[i]
        # 如果最小值被交换过,要更新索引
        if i == length + minindex 或 i == minindex:
            minindex = maxindex - length 或 maxindex
    # 最小值索引不同,但值相同就没必要交换了
    if minorigin != minindex and lst[minorigin] != lst[minindex]:
        lst[minorigin], lst[minindex] = lst[minindex], lst[minorigin]
print(lst)


三、直接插入排序
    
num = [1,5,8,6,3,4,2]
nums = [0] + num
for i in range(2,len(nums)):
    nums[0] = nums[i]
    j = i - 1
    if nums[j] > nums[0]:  # ???
        while nums[j] > nums[0]:
            nums[j+1] = nums[j]
            j -= 1
            ums[j+i] = nums[0]
print(nums)

排序算法

标签:Python

原文地址:http://blog.51cto.com/13655145/2103935

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