python中list排序問題

2021-08-22 02:42:40 字數 1772 閱讀 7371

用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賦值問題

有些時候我們在for迴圈中想把某乙個list或者dict賦值給一些元素,比如下面這種場景 我們想得到的是lst2的值是 0 0,1 0,1,2 0,1,2,3 0,1,2,3,4 但是結果是 0,1,2,3,4 0,1,2,3,4 0,1,2,3,4 0,1,2,3,4 0,1,2,3,4 lst1...

STL中的List排序問題

最近想鑽研一下stl源 於是照著侯捷的 stl原始碼剖析 看sgi stl,今天想寫寫list的排序演算法。源 如下 template template void list tp,alloc sort strictweakordering comp carry.swap counter i if i...

python中dict和list排序

1 list排序 列表的排序是python內建功能,自身含有sort方法 如 s 2,1,3,0 s.sort 0,1,2,3 2 dict排序 對字典的排序,因為每乙個項包括乙個鍵值對,所以要選擇可比較的鍵或值進行排序 sorted iterable cmp key reverse cmp和key...