排序只對一維資料有意義.
兩層迴圈, 第一層是遍歷每乙個元素.
第二層迴圈,讓兩兩之間進行比較交換.
時間複雜度: o(n^2)
空間複雜度: o(1)
穩定性: 穩定的
def
buble_sort
(arr)
:for i in
range
(len
(arr)-1
):for j in
range
(len
(arr)
-i-1):
if arr[j]
>arr[j+1]
: arr[j]
,arr[j+1]
=arr[j+1]
,arr[j]
return arr
選擇後面的最小的和當前的元素進行對比
時間複雜度: o(n^2)
空間複雜度: o(1)
穩定性: 不穩定
def
select_sort
(arr)
:for i in
range
(len
(arr)-1
):index = i
for j in
range
(i+1
,len
(arr)):
if arr[j]
> arr[index]
: index = j
arr[i]
,arr[index]
= arr[index]
,arr[i]
return arr
思路: 選擇乙個基準值, 然後比它小的放到乙個陣列中, 比它大的放到另乙個陣列中, 遞迴這個操作.
時間複雜度: o(nlog2(n))
空間複雜度: o(nlog2(n))
穩定性: 不穩定的.
def
quick_sort
(arr):if
len(arr)
<=1:
return arr
pivot = arr.pop(
) big =
small =
for i in
range
(len
(arr)):
if arr[i]
>pivot:
)else:)
return quick_sort(small)
+[pivot]
+ quick_sort(big)
認為第乙個已經排好序, 從後面依次迴圈選擇元素和排好序的元素做對比,找到合適的位置,插入.
時間複雜度: o(n^2)
空間複雜度: o(1)
穩定性: 穩定的
# 插入排序
# 認為第乙個已經排好序, 從後面依次迴圈選擇元素和排好序的元素做對比,找到合適的位置,插入.
# 時間複雜度: o(n^2)
# 空間複雜度: o(1)
# 穩定性: 穩定的
definsert_sort
(arr)
:for i in
range(1
,len
(arr)):
loop_index = i
while loop_index >
0and arr[loop_index]
< arr[loop_index -1]
: arr[loop_index]
, arr[loop_index -1]
= arr[loop_index -1]
, arr[loop_index]
loop_index -=
1return arr
氣泡排序 選擇排序 插入排序 快速排序
include 氣泡排序,思想 從最末位開始 往前一位一位比較,比前一位小的話,就交換位置 兩個for,第乙個for迴圈用於記錄已排序的位置,第二個for迴圈用於已排序位置到結束位置之間的氣泡排序 void popsort int p int n 選擇排序,由前往後選擇最小的數。一輪比較完後,將最小...
氣泡排序 選擇排序 插入排序 快速排序
氣泡排序 元素兩兩比較,大的往後放,經過一輪比較後,那麼最大的元素就會出現在最後面。public static void main string args for int j 0 j arr i 1 system.out.println arrays.tostring arr 每次拿乙個元素,跟他後...
排序(冒泡,選擇,插入,快速)
氣泡排序func bubblesort s int int return s 選擇排序 選擇是排序也屬於內部排序法,是從欲排序的資料中,按指定的規則選出某一元素,經過和其他元素重整,再依原則交換位置後達到排序目的。第一次從r 0 r n 1 中選出最小值,與r 0 交換,第二次從r 1 r n 1 ...