pythonでlistソートの問題
1753 ワード
pythonによるlistのソート方法
1、リストの並べ替え
方法1.listの組み込み関数list.sortソート
list.sort(func=None,key=None,reverse=False)
方法2.シーケンスタイプ関数sorted(list)でソート
sorted(list)は、式として使用できるオブジェクトを返します.オリジナルのlist順序は変更されず、新しい並べ替えられたlistオブジェクトを生成します.
list.sort()はオブジェクトを返さず,既存のlist順序を変更する.
2、泡立ち順
1.隣接する要素を比較し、1番目が2番目より大きい場合は、2つを交換します.
2.第1のペアから最後のペアまで、隣接する各ペアの要素を比較します.このとき、最後の要素は最大の数です.
3、ソートの挿入
4、クイックソート
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))