选择排序
source_arr = [ 4 , 6 , 5 , 10 , 3 , 2 , 1 ]
def sort_selection ( ) :
for i in range ( len ( sourse_arr) - 1 ) :
v_min = i
for j in range ( i + 1 , len ( sourse_arr) ) :
if sourse_arr[ v_min] > sourse_arr[ j] :
v_min = j
sourse_arr[ i] , sourse_arr[ v_min] = sourse_arr[ v_min] , sourse_arr[ i]
print ( sourse_arr)
插入排序
def sort_insertion ( ) :
for i in range ( 1 , len ( sourse_arr) ) :
for j in range ( i, 0 , - 1 ) :
if sourse_arr[ j] < sourse_arr[ j - 1 ] :
sourse_arr[ j] , sourse_arr[ j - 1 ] = sourse_arr[ j - 1 ] , sourse_arr[ j]
else :
break
print ( sourse_arr)
快速排序
def sort_quick_part ( arr, start, end) :
key = arr[ start]
left = start + 1
right = end
while 1 :
while 1 :
if arr[ right] < key or right == start:
break
right -= 1
while 1 :
if arr[ left] > key or left == end:
break
left += 1
if right <= left:
break
else :
arr[ left] , arr[ right] = arr[ right] , arr[ left]
arr[ start] , arr[ right] = arr[ right] , arr[ start]
return right
def sort_quict ( arr, start, end) :
if end <= start:
return
part_index = sort_quick_part( arr, start, end)
sort_quict( arr, start, part_index - 1 )
sort_quict( arr, part_index + 1 , end)
sort_quict( source_arr, 0 , len ( source_arr) - 1 )
print ( source_arr)