日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

01-算法简介

發(fā)布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 01-算法简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)據(jù)結(jié)構(gòu)和算法
基于《算法圖解》—Aditya Bhargava和《數(shù)據(jù)結(jié)構(gòu)》—嚴(yán)蔚敏

**

算法圖解:(基于Python)*

第1章—算法簡介

1.1 引言
算法是一組完成任務(wù)的指令。

1.2 二分查找(binary_search)
二分查找是一種算法,其輸入是一個有序列表(必須有序)。如果要查找的元素包含在列表中,二分查找返回其位置;否則返回null。
1.2.1 普通查找和二分查找
例子:猜數(shù)字游戲
簡單查找每次只能排除一個數(shù)字;而使用二分查找時,猜測的是中間的數(shù)字,從而每次都將余下的數(shù)字排除一半。一般而言,對于包含n個元素的列表,使用二分查找最多需要log n (默認2為底)步,而簡單查找最多需要n步。

#二分查找 def binary_search(list, item):low = 0high = len(list-1)while low <= high:mid = (low+high)//2guess = list[mid]if guess == item:return midif guess > item:high = mid -1else:low = mid + 1return Nonemy_list = [1,3,5,7,9] print binary_search(my_list, 3) print binary_search(my_list, -1) **練習(xí)** 1.1 假設(shè)有一個包含128個名字的有序列表,你要使用二分查找在其中查找一個 名字,請問最多需要幾步才能找到? 1.2 上面列表的長度翻倍后,最多需要幾步? (答案見下章)

1.3 大O表示法
大O表示法是一種特殊的表示法,指出了算法的速度有多快。
二分查找和簡單查找的運行時間的增速不同:隨著元素數(shù)量的增加,二分查找需要的額外時間并不多,而簡單查找需要的額外時間卻很多。
大O表示法指出了最糟糕情況下的運行時間。
一些常見的大O運行時間:

O(log n),也叫對數(shù)時間,包括二分查找; O(n),也叫線性時間,包括簡單查找; O(n*log n),包括快速排序; O(n2),包括選擇排序; O(n!)

啟示:

  • 算法的速度指的并非時間,而是操作數(shù)的增加。
  • 談?wù)撍惴ǖ乃俣葧r,我們說的是隨著輸入的增加,其運行時間將以什么樣的速度增加。
  • 算法的運行時間用大O表示法表示。
  • O(log n)比O(n)快,當(dāng)需要搜索的元素越多時,前者比后者快得越多。

——持續(xù)修改完善中…

總結(jié)

以上是生活随笔為你收集整理的01-算法简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。