python算法笔记--排序(冒泡,选择,插入)

1.python实现冒泡排序:

原理:
总共需要冒泡end-1次,最大的数会被“冒泡”到最后一个位置
一次冒泡中总共需要交换end-1次。

class maopao:
    def __init__(self):
        self.a = [3,6,8,4,2,1,1]
    def oo_order(self):
        end = len(self.a)
        for j in range(0,end-1):#总共需要冒泡end-1次,最大的数会被“冒泡”到最后一个位置
            for i in range(0,end-1):#一次冒泡中总共需要交换end-1次
                if self.a[i] > self.a[i+1]:
                    temp = self.a[i]
                    self.a[i] = self.a[i+1]
                    self.a[i+1] = temp
            end -= 1
        print(self.a)

if __name__ == '__main__':
    arg = maopao()
    arg.oo_order()

2.选择排序

class xuanzeOrder:
    def __init__(self):
        self.a = [2,4,6,8,5,3,4,6,9]


    def xzOrder(self):
        for i in range(0,len(self.a)):#对于0~len-1,将最小的数放在首位
            minIndex = i
            for j in range(i+1,len(self.a)):#对于i+1~len-1,找最小元素的下标
                minIndex = j if(self.a[j] < self.a[minIndex]) else minIndex
            self.swap(i,minIndex)
        print(self.a)
        #交换
    def swap(self,i,minIndex):
        temp = self.a[i]
        self.a[i] = self.a[minIndex]
        self.a[minIndex] = temp

if __name__ == '__main__':
    arg = xuanzeOrder()
    arg.xzOrder()

插入排序

class insertOrder:
    def __init__(self):
        self.a = [4,2,6,8,5,3,4,6,9]
    def inseOrder(self):
        for i in range(1,len(self.a)):#考察0~len-1
            for j in range(i-1,-1,-1):#考察i-1~0
                if self.a[j] > self.a[j+1]:
                   self.swap(j,j+1)
        print(self.a)

    def swap(self,m,n):
        temp = self.a[m]
        self.a[m] = self.a[n]
        self.a[n] = temp

if __name__ == '__main__':
    arg = insertOrder()
    arg.inseOrder()
发布了23 篇原创文章 · 获赞 9 · 访问量 4217

猜你喜欢

转载自blog.csdn.net/qq1225598165/article/details/100588302