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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章