真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PyThon排序算法如何使用-創(chuàng)新互聯(lián)

小編給大家分享一下PyThon排序算法如何使用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)).為客戶提供專業(yè)的成都服務(wù)器托管,四川各地服務(wù)器托管,成都服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:028-86922220

1、冒泡排序

冒泡排序?qū)⒅鸩奖闅v列表并比較相鄰的元素對。如果元素的順序錯(cuò)誤,則會(huì)交換這些元素。重復(fù)對列表中未排序部分的遍歷,直到對列表進(jìn)行排序。

示例代碼:

def bubble_sort(arr):
    def swap(i, j):
        arr[i], arr[j] = arr[j], arr[i]
 
    n = len(arr)
    swapped = True
    
    x = -1
    while swapped:
        swapped = False
        x = x + 1
        for i in range(1, n-x):
            if arr[i - 1] > arr[i]:
                swap(i - 1, i)
                swapped = True
                    
return arr

場景演示:

PyThon排序算法如何使用

2、選擇排序

選擇排序優(yōu)于冒泡排序。使用選擇排序,我們將輸入列表/數(shù)組分為兩部分:已排序項(xiàng)的子列表和構(gòu)成列表其余部分的剩余項(xiàng)的子列表。

我們首先在未排序的子列表中找到最小的元素,并將其放在已排序子列表的末尾。我們不斷地獲取最小的未排序元素,并將其按排序順序放入已排序的子列表中。此過程將重復(fù)進(jìn)行,直到列表完全排序。

示例代碼:

def selection_sort(arr):        
    for i in range(len(arr)):
        minimum = i
        
        for j in range(i + 1, len(arr)):
            # 選擇最小值
            if arr[j] < arr[minimum]:
                minimum = j
 
        # 把它放在已排序的數(shù)組結(jié)尾
        arr[minimum], arr[i] = arr[i], arr[minimum]
            
return arr

場景演示:

PyThon排序算法如何使用

3、插入排序

插入排序比冒泡排序和選擇排序都要快,而且可以說更加簡單。在每次循環(huán)迭代中,插入排序從數(shù)組中刪除一個(gè)元素。然后在另一個(gè)排序數(shù)組中查找該元素所屬的位置,并將其插入其中。它重復(fù)這個(gè)過程,直到?jīng)]有輸入元素保留。

代碼示例:

def insertion_sort(arr):
        
    for i in range(len(arr)):
        cursor = arr[i]
        pos = i
        
        while pos > 0 and arr[pos - 1] > cursor:
            # 交換列表中的數(shù)字
            arr[pos] = arr[pos - 1]
            pos = pos - 1
        # 中斷并進(jìn)行最終交換
        arr[pos] = cursor
 
return arr

場景演示:

PyThon排序算法如何使用

4、合并排序

合并排序是一個(gè)完美的分而治之的算法例子。使用這種算法只需要通過以下兩個(gè)主要步驟:

(1) 連續(xù)分割未排序的列表,直到有N個(gè)子列表,其中每個(gè)子列表都有1個(gè)“未排序”的元素,N是原始數(shù)組中的元素?cái)?shù)。

(2) 反復(fù)合并,即一次將兩個(gè)子列表合并在一起,生成新的已排序子列表,直到所有元素都完全合并到一個(gè)已排序的數(shù)組中。

代碼示例:

def merge_sort(arr):
    # 對最后一個(gè)數(shù)組進(jìn)行拆分
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    # 在兩個(gè)部分上遞歸執(zhí)行merge_sort
    left, right = merge_sort(arr[:mid]), merge_sort(arr[mid:])
 
    # 合并在一起
    return merge(left, right, arr.copy())
 
 
def merge(left, right, merged):
 
    left_cursor, right_cursor = 0, 0
    while left_cursor < len(left) and right_cursor < len(right):
      
        # 將每一個(gè)排序并放入結(jié)果
        if left[left_cursor] <= right[right_cursor]:
            merged[left_cursor+right_cursor]=left[left_cursor]
            left_cursor += 1
        else:
            merged[left_cursor + right_cursor] = right[right_cursor]
            right_cursor += 1
            
    for left_cursor in range(left_cursor, len(left)):
        merged[left_cursor + right_cursor] = left[left_cursor]
        
    for right_cursor in range(right_cursor, len(right)):
        merged[left_cursor + right_cursor] = right[right_cursor]
 
return merged

場景演示:

PyThon排序算法如何使用

5、快速排序

快速排序也是一種分而治之的算法,與合并排序一樣。盡管它有點(diǎn)復(fù)雜,但在大多數(shù)標(biāo)準(zhǔn)實(shí)現(xiàn)中,它的執(zhí)行速度比合并排序快得多,而且很少達(dá)到O(n2)的最壞情況復(fù)雜度。它有三個(gè)主要步驟:

(1) 我們首先從數(shù)組中選擇一個(gè)元素,稱之為pivot。

(2) 將小于軸的所有元素移到軸的左側(cè);將大于軸的所有元素移到軸的右側(cè)。這稱為分區(qū)操作。

(3) 遞歸地將上述2個(gè)步驟分別應(yīng)用于元素的每個(gè)子數(shù)組,這些元素的值比上一個(gè)軸的值小或大。

示例代碼:

def partition(array, begin, end):
    pivot_idx = begin
    for i in xrange(begin+1, end+1):
        if array[i] <= array[begin]:
            pivot_idx += 1
            array[i], array[pivot_idx] = array[pivot_idx], array[i]
    array[pivot_idx], array[begin] = array[begin], array[pivot_idx]
    return pivot_idx
 
def quick_sort_recursion(array, begin, end):
    if begin >= end:
        return
    pivot_idx = partition(array, begin, end)
    quick_sort_recursion(array, begin, pivot_idx-1)
    quick_sort_recursion(array, pivot_idx+1, end)
 
def quick_sort(array, begin=0, end=None):
    if end is None:
        end = len(array) - 1
    
return quick_sort_recursion(array, begin, end)

場景演示:

PyThon排序算法如何使用

看完了這篇文章,相信你對PyThon排序算法如何使用有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)頁標(biāo)題:PyThon排序算法如何使用-創(chuàng)新互聯(lián)
URL地址:http://weahome.cn/article/dpigsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部