数据结构【排序】

数据结构之简单排序

因为要做数据结构的大作业了,这一个学期都浑浑噩噩的过来了,上课也没好好听,打算把老师PPT上涉及的东西都做一遍。

1.冒泡排序
思想:对每两个相邻的元素进行比较,若为逆序,则将两者交换,这样的操作反复进行,直至全部记录都比较、交换完毕为止。如此经过一趟冒泡排序之后,就将关键字最大(或最小)的元素安排在最后一个(或第一个) 元素的位置上。然后,对后n-1个元素重复进行同样的操作,则将具有次大(或次小)元素安排在倒数(或正数)第二个元素的位置上。重复以上过程,直至没有元素需要交换时为止。至此,整个序列的记录按关键字由小到大的顺序排列完毕。

def bubble_sort(lst):
    for i in range(len(lst)-1):
        for j in range(len(lst)-1-i):
            if lst[j] > lst[j+1]:
                lst[j],lst[j+1] = lst[j+1],lst[j]
        print(lst)
bubble_sort([43,18,9,13,55,7,42])

运行过程:
[18, 9, 13, 43, 7, 42, 55]
[9, 13, 18, 7, 42, 43, 55]
[9, 13, 7, 18, 42, 43, 55]
[9, 7, 13, 18, 42, 43, 55]
[7, 9, 13, 18, 42, 43, 55]
[7, 9, 13, 18, 42, 43, 55]
我这个是把最大的冒泡到最后一个
2.选择排序
第一趟:从所有元素中找出最小的放在第一个位置
第二趟:从第一个位置之后的所有元素中找到最小的放在第二个位置

def choose_sort(lst):
    for i in range(len(lst)-1):
        k = i
        for j in range(i+1,len(lst)-1):
            if lst[j] < lst[k]:
                lst[j],lst[k] = lst[k],lst[j]
        print(lst)
choose_sort([43,18,9,13,55,7,42])

运行过程:
[7, 43, 18, 13, 55, 9, 42]
[7, 9, 43, 18, 55, 13, 42]
[7, 9, 13, 43, 55, 18, 42]
[7, 9, 13, 18, 55, 43, 42]
[7, 9, 13, 18, 43, 55, 42]
[7, 9, 13, 18, 43, 55, 42]

表元素排序

def lst_sort(lst) :
    for i in range(1, len(lst)): # seg [0:1] is sorted
        x = lst[i]
        j = i
        while j > 0 and lst[j-1] > x:
            lst[j] = lst[j-1]
                   # 反序逐个后移元素,直至确定插入位置
            j -= 1
        lst[j] = x
        print(lst)
lst_sort([2,1,3,0])

运行过程:
[1, 2, 3, 0]
[1, 2, 3, 0]
[0, 1, 2, 3]

猜你喜欢

转载自blog.csdn.net/yumi_huang/article/details/79071810