python基础一 ------排序和查找算法

时间:2023-03-08 16:16:56

插入排序;

假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素
    放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面
    因为前面两个元素顺序已经排好,再将这个新进入到前面的较小元素与前面排好顺序的元素依次比较,直到找到合适位置插入
    举例:[9,4,3,1]
    顺序依次:-->[4,9,3,1]
                          -->[4,3,9,1]-->[3,4,9,1]
                              --[3,4,1,9]-->[3,1,4,9]-->[1,3,4,9]

代码

 #-*-coding:utf-8 -*-

 def insert_sort(lists):

     print("原数据",lists)
num = len(lists)
for i in range(1,num):
key = lists[i]
j = i-1
while(j>=0):
if lists[j]>key:
lists[j+1] = lists[j]
lists[j] = key
print(lists)
j -=1
print("排序后",lists) insert_sort([9,4,3,1])

python基础一 ------排序和查找算法

冒泡排序:

 def bubble_sort(lists):
print("排序前:冒泡排序",lists)
num = len(lists)
for i in range(0,num):
for x in range(i+1,num):
if(lists[x]<lists[i]):
temp = lists[i]
lists[i] = lists[x]
lists[x] = temp
print(lists)
print("排序后",lists)

python基础一 ------排序和查找算法

二分法查找:

代码实现

 def binary_search(lists,e):
#二分法查找(必须是对于排序后的数组)
right = len(lists)
left = 0
while left<=right:
mid = int((right+left)/2)
if e<lists[mid]:
right = mid-1
continue
if lists[mid]==e:
return mid
if lists[mid]<e:
left = mid+1 return "not exist" search_list = [1, 3, 4, 6, 8, 9]
[print(binary_search(search_list,x)) for x in search_list]

按顺序输出每个元素小标

python基础一 ------排序和查找算法

相关文章