【轉】用Python實現各種排序演算法

來源:互聯網
上載者:User

標籤:www   冒泡排序   排序演算法   位置   count   過程   比較   冒泡   組成   

以下代碼均為python3版本的代碼

# 冒泡排序# 比較相鄰的元素大小,將小的前移,大的後移,就像水中的氣泡一樣,最小的元素經過幾次移動,會最終浮到水面上。def bubbleSort(list):    if list != None:        if len(list) ==1:            pass        else:            for i in range(len(list)):                for j in range(len(list)-1-i):                    if list[j]>list[j+1]:                        list[j],list[j+1] = list[j+1],list[j]if __name__ == ‘__main__‘:    list1 = [2,3,5,7,8,9,6,54,1,42]    bubbleSort(list1)    print(list1)
# 插入排序# 將一個待排資料按其大小插入到已經排序的資料中的適當位置,直到全部插入完畢。def insertSort(list):    if list != None:        if len(list) == 1:            pass        else:            for i in range(1,len(list)):                temp = list[i]                for j in range(i):                    if list[j]>list[i]:                        for k in range(i,j,-1):                            list[k] = list[k-1]                        list[j] = tempif __name__ == ‘__main__‘:    list1 = [2,3,5,7,8,9,6,54,1,42]    print(list1)    insertSort(list1)    print(list1)
# 快速排序# 通過一趟排序將要排序的資料分割成獨立的兩部分# 其中一部分的所有資料都比另外一部分的所有資料都要小# 然後再按此方法對這兩部分資料分別進行快速排序# 整個排序過程可以遞迴進行# 以此達到整個資料變成有序序列。def first_sort(numbers,i,j):    temp = numbers[i]    while i != j:        while i<j and numbers[j]>temp:            j = j-1        numbers[i] = numbers[j]        while i<j and numbers[i]<temp:            i = i+1        numbers[j]=numbers[i]    numbers[i] = temp    return idef quickSort(numbers,i,j):    if i < j:        middle = first_sort(numbers,i,j)        quickSort(numbers,i,middle-1)        quickSort(numbers,middle+1,j)if __name__ == ‘__main__‘:    list1 = [2,3,5,7,8,9,6,54,1,42]    print(list1)    quickSort(list1,0,len(list1)-1)    print(list1)
# 選擇排序# 從所有序列中先找到最小的,然後放到第一個位置# 之後再看剩餘元素中最小的,放到第二個位置……# 以此類推,就可以完成整個的排序工作。def selectSort(list):    if list != None:        for i in range(len(list)):            min = i            for j in range(i+1,len(list)):                if list[min]>list[j]:                    min = j            if min != i:                list[min],list[i] = list[i],list[min]if __name__ == ‘__main__‘:    list1 = [2,3,5,7,8,9,6,54,1,42]    print(list1)    selectSort(list1)    print(list1)
# 希爾排序# 先將整個待排元素序列分割成若干個子序列(由相隔某個“增量”的元素組成的)分別進行直接插入排序# 然後依次縮減增量再進行排序,# 待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。def shellSort(data,flag):    ‘‘‘    :param data: list, to be sorted    :param flag: 0 -> asc, 1 -> desc    :return: a new sorted list    ‘‘‘    retData=[]    for item in data:        retData.append(item)    count = len(retData)    step = count // 2 # python3    while step > 0:        i = 0        while i< count:            j = i + step            while j < count:                t = retData.pop(j)                k = j - step                # asc                if flag == 0:                    while k>= 0:                        if t >= retData[k]:                            retData.insert(k+1,t)                            break                        k = k - step                    if k < 0:                        retData.insert(0,t)                # desc                elif flag == 1:                    while k >= 0:                        if t <= retData[k]:                            retData.insert(k+1, t)                            break                        k = k - step                    if k < 0:                        retData.insert(0, t)                j = j + step            i = i + 1        step = step//2    return retDataif __name__ == ‘__main__‘:    list1 = [2, 3, 5, 7, 8, 9, 6, 54, 1, 42]    data = shellSort(list1,0)    print(‘ASC:‘)    print(data)    data = shellSort(list1, 1)    print(‘DESC:‘)    print(data)

【轉自】http://www.kuqin.com/shuoit/20150702/346879.html

稍有修改

mark down

【轉】用Python實現各種排序演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.