• 数据结构与算法(15)——冒泡法和选择法排序


    • 冒泡法排序

    算法思路:在对对无序表进行多趟比较。

    • 代码思路
    def bubbleSort(alist):
        '''
        始终将最大的放到最后一位
        :param alist:
        :return:
        '''
        for passnum in range(len(alist)-1,0,-1):
            for i in range(passnum):
                if alist[i] > alist[i +1]:
                    alist[i], alist[i+1] = alist[i+1], alist[i]
    alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    bubbleSort(alist)
    print(alist)
    def bubbleSort(alist):
        '''
        :param alist:
        :return:
        '''
        for i in range(len(alist)):
            for j in range(len(alist)-i-1):
                if alist[j] > alist[j+1]: #从小到大排序
                    alist[j], alist[j+1] = alist[j+1], alist[j]
    alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    bubbleSort(alist)
    print(alist)
    #减少遍历次数
    def bubbleSort(alist):
        '''
        始终将最大的放到最后一位
        :param alist:
        :return:
        '''
        passnum = len(alist) -1
        exchange = True
        while passnum >0 and exchange:
            exchange = False #如果一趟下来都没有交换过大小,则说明list已经排好序
            for i in range(passnum):
                if alist[i] > alist[i + 1]:
                    alist[i], alist[i + 1] = alist[i + 1], alist[i]
                    exchange = True
            passnum = passnum -1
    alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    bubbleSort(alist)
    print(alist)
    • 选择法排序

    对冒泡排序进行了改进,保留多趟对比的思路,但是每一次只是记录了最大项的索引,因此每趟制作一次交换。

    比对复杂度还是o(n^2)交换次数的复杂度是O(n)

    #solution3
    #选择排序
    def selectionSort(alist):
        for fillslot in range(len(alist)-1,0,-1):
            positionOfMax = 0
            for location in range(1, fillslot+1):
                if alist[location] > alist[positionOfMax]:
                    positionOfMax = location
            temp = alist[fillslot]
            alist[fillslot] = alist[positionOfMax] #将最大项的位置和最后一项进行一次交换
            alist[positionOfMax] = temp
    alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    selectionSort(alist)
    print(alist)
  • 相关阅读:
    spring cloud的pigx版本
    SQL Profiler使用
    postmen简单用法
    T-SQL
    常见问题整理
    数据库 新建维护计划
    c# ABP返回格式自定义,去除固定返回格式
    系统综合实践期末大作业 第32组
    系统综合实践第7次实践作业 第32组
    系统综合实践第6次实践作业 第32组
  • 原文地址:https://www.cnblogs.com/yeshengCqupt/p/13336586.html
Copyright © 2020-2023  润新知