pythonでlistソートの問題

1753 ワード

pythonによるlistのソート方法
1、リストの並べ替え
方法1.listの組み込み関数list.sortソート
list.sort(func=None,key=None,reverse=False)
方法2.シーケンスタイプ関数sorted(list)でソート
>>>list = [5,3,9,1]
>>>list
[5,3,9,1]
>>>sorted(list)
[1,3,5,9]
>>>list
[5,3,9,1]
>>>list.sort()
>>>list
[1,3,5,9]

sorted(list)は、式として使用できるオブジェクトを返します.オリジナルのlist順序は変更されず、新しい並べ替えられたlistオブジェクトを生成します.
list.sort()はオブジェクトを返さず,既存のlist順序を変更する.
2、泡立ち順
1.隣接する要素を比較し、1番目が2番目より大きい場合は、2つを交換します.
2.第1のペアから最後のペアまで、隣接する各ペアの要素を比較します.このとき、最後の要素は最大の数です.
arr = [3,9,1,6]
def func(arr):
    n = len(arr)
    for j in range(0,n-1):
        for i range(0,n-1-j):
            if arr[i] > arr[j]:
                arr[i],arr[i+1] = arr[i+1],arr[i]
fun(arr)
print(arr)        # arr = [1,3,6,9]

3、ソートの挿入
array = [1,4,8,0,2,10,7,3]
def insert_sort(array):
    for i in range(len(array)):
        for j in range(i):
            if array[i] < array[j]:
                array.insert(j, array.pop(i))
    return array
print(insert_sort(array))

4、クイックソート
array = [1,4,8,0,2,10,7]
def quick_sort(array):
    def recursive(begin, end):
        if begin > end:
            return
        l, r = begin, end
        pivot = array[l]
        while l < r:
            while l < r and array[r] > pivot:
                r -= 1
            while l < r and array[l] <= pivot:
                l += 1
            array[l], array[r] = array[r], array[l]
        array[l], array[begin] = pivot, array[l]
        recursive(begin, l - 1)
        recursive(r + 1, end)
    recursive(0, len(array) - 1)
    return array
print(quick_sort(array))