二分查找
def binary_search ( number_list, number) :
first = 0
last = len ( number_list) - 1
while first <= last:
mid = ( first + last) // 2
if number_list[ mid] > number:
last = mid - 1
elif number_list[ mid] < number:
first = mid + 1
else :
return mid
return None
numbers = [ 1 , 2 , 3 , 10 , 5 , 6 , 7 , 8 , 9 ]
if __name__ == '__main__' :
print ( binary_search( numbers, 7 ) )
简单的选择排序
def select_sort ( number_list) :
for i in range ( len ( number_list) - 1 ) :
midIndex = i
for j in range ( i + 1 , len ( number_list) ) :
if number_list[ midIndex] > number_list[ j] :
midIndex = j
number_list[ i] , number_list[ midIndex] = number_list[ midIndex] , number_list[ i]
return number_list
numbers = [ 1 , 3 , 30 , 6 , 18 , 8 , 9 , 2 , 10 , 22 ]
if __name__ == '__main__' :
print ( select_sort( numbers) )
冒泡排序
def bubble_select ( number_list) :
for i in range ( len ( number_list) ) :
for j in range ( i+ 1 , len ( number_list) ) :
if number_list[ i] > number_list[ j] :
number_list[ i] , number_list[ j] = number_list[ j] , number_list[ i]
return number_list
number_lists = [ 1 , 5 , 6 , 3 , 2 , 6 , 9 , 0 ]
if __name__ == '__main__' :
print ( bubble_select( number_lists) )
快速排序
def quick_sort ( arr) :
if len ( arr) <= 1 :
return arr
pivot = arr[ len ( arr) // 2 ]
left = [ x for x in arr if x < pivot]
middle = [ x for x in arr if x == pivot]
right = [ x for x in arr if x > pivot]
return quick_sort( left) + middle + quick_sort( right)
print ( quick_sort( [ 1 , 2 , 9 , 4 , 5 , 6 ] ) )