相关简单算法代码(顺序,二分,冒泡,插入,选择等)

Posted huahuawang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相关简单算法代码(顺序,二分,冒泡,插入,选择等)相关的知识,希望对你有一定的参考价值。

顺序查找

技术图片
1 def linear_search(li,val):
2     for i,k in enumerate(li):
3         if k == val:
4             return i
5 
6     else: # for循环完毕后一定会执行else
7         return None
View Code

二分法查找

技术图片
 1 # 二分算法代码
 2 
 3 def  binary_search(list,val):
 4     left = 0
 5     right = len(list)-1
 6     while left<=right:  # 候选区有值
 7         mid = (left + right) // 2
 8         if list[mid] ==val:
 9             return mid
10         elif list[mid] > val:
11             right = mid - 1
12         else:
13             left = mid + 1
14     else:
15         return  None
16 list = [1,2,3,4,4,6,7]
17 print(binary_search(list,8))
View Code


冒泡排序

技术图片
 1 # 冒泡排序
 2 def bubble_sort(li):
 3     for i in range(len(li)-1): # i表示趟数
 4         exchange = False       # 没有移动数字
 5         for j in range(len(li)-i-1):
 6             if li[j] > li[j+1]:
 7                 li[j],li[j+1] = li[j+1],li[j]
 8                 exchange = True
 9         print(li)
10         if not exchange:
11             break
12 
13 
14 
15 li = [1,2,3,4,6,5,8]
16 f = bubble_sort(li)
View Code


插入排序

# 插入排序
def insert_sort(li):
    for i in range (1,len(li)): # i表示拿到的数字索引
        j = i-1 # j 表示有序区最后一个的索引
        tmp = li[i]
        while j>=0 and li[j]>tmp:
            li[j+1] = li[j]
            j -= 1
        li[j+1] = tmp
        print(li)


li = [1,5,6,8,5,2]
print(li)
insert_sort(li)


选择排序

# 选择排序
def select_sort(li):
    for i in range (len(li)-1): # i 表示趟数
        for j in range(i+1,len(li)):
            if li[j]<li[i]: #li[i]表示最小
                li[i],li[j] = li[j],li[i]
        print(li)


li = [2,1,2,5,6]
print(li)
select_sort(li)

 

以上是关于相关简单算法代码(顺序,二分,冒泡,插入,选择等)的主要内容,如果未能解决你的问题,请参考以下文章

排序算法(冒泡,选择,插入,快速)查找算法(二分,快速)

python中都有哪些简单的算法?

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序

基本的查找算法

算法: 二分查找 冒泡 插入 选择排序