python中list排序问题

用python实现list的排序方法

1、list列表排序

方法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.比较相邻的元素,如果第一个比第二个大,就交换他们两个

2.对每一对相邻的元素都进行比较,从第一对到最后一对。这时,最后的元素就是最大的数。

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))

 

你可能感兴趣的:(python中list排序问题)