python 算法 一

python 算法 一,第1张

概述 二分查找算法 deflist_search(l,v):left=0right=len(l)-1whileleft<=right:mid=(left+right)//2ifl[mid]==v:returnmidelifl[mid]<v:left=mid+1else:

 

二分查找算法

 

def List_search(l,v):    left = 0    right = len(l) -1    while left <= right:        mID = (left + right) // 2        if l[mID] == v:            return mID        elif l[mID] < v:            left = mID +1        else:            right = mID -1    else:        return Nonel = List(range(100))s = List_search(l,50)print(s)

 

个人总结:查找的值所在的数据类型中以数据中心的值分割,如果等于则找到,如果小于中心值,查找的值在右部分,重新定义左边最后一个值,就是中心值加一,大于,值在左,重新定义右边值,减一,直到找到,否则返回none。

 

排序算法

1.冒泡排序:

                   

 

 

 

import randomdef bubble_sort(l):    for i in range(len(l)-1):
     exchange = False for x in range(len(l)-i-1): if l[x] > l[x+1]: l[x], l[x+1] = l[x+1],l[x]
          exchange = True
     if not exchange:
        return
l = [random.randint(1,10) for i in range(10)]s = bubble_sort(l)print(l)

  个人总结:比较,i比较几次,(索引0-9,长度是十个所以减一,不然多循环一次),减去比较完的次数,在减一,比较大于正序,调换,小于反序。定义一个bool,如果走了调换位置,就设置为True,没有走的话,就证明已经排序完成了,就直接返回。

 

 2.选择排序

 

def select_sort(l):    for i in range(len(l)-1):        min = i        for x in range(i,len(l)):            if l[x] < l[min]:                min = x
     l[i],l[min] = l[min],l[i]l = [random.randint(1,10) for i in range(10)]select_sort(l)print(l)

  循环一个然后和后面的值循环比较,比我小,换你来当最小的,换位,大,直接换。

 

3.插入排序

def insert_sort(l):    for i in range(1,len(l)):        tmp = l[i]        j = i-1 #后面的值        while j >=0 and l[j] > tmp:            l[j+1] = l[j]  #把j的位置向前面移动一位            j -= 1  #和后面的继续比较        l[j+1] = tmp   #循环结束条件不成立,索引负数,比j大的直接插l = [1,6,5,8,9,7,3,4,2]insert_sort(l)print(l)

  

#从第一个值开始比较,第0个是比较对象

 

 快排

def partition(l,left,right):    tmp = l[left]    while left < right:        while left < right and l[right] > tmp :            right -=1        l[left] = l[right]        while left < right and l[left] < tmp :            left += 1        l[right] = l[left]    l[left] = tmp    return leftdef quick_sort(l,left,right):    if left < right:        mID = partition(l,left,right)        #递归        quick_sort(l,left,mID-1)  #左边在重新快排        quick_sort(l,mID+1,right) #右边在重新快排l = [6, 3, 4, 8, 5, 2, 9, 1,17,7,10,11]quick_sort(l,0,len(l)-1)print(l)

  循环左边之和右边的值,拿第一个值,和最右边的值比较比tmp大向左边就继续找,比tmp小就把它换到左边,左边的相反 *** 作,最后把tmp放到中间的位置,然后把tmp返回。

 

总结

以上是内存溢出为你收集整理的python 算法 一全部内容,希望文章能够帮你解决python 算法 一所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1185770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存