iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
自我挑戰組

英文資訊與程式相關概念系列 第 30

排序與搜尋演算法

  • 分享至 

  • xImage
  •  

演算法就是為了解決一個問題而採取的方法和步驟,通常以虛擬碼來表示,
在以c、c++、JAVA、Python來完成
排序:
將一串列的值由小到大,或是由大到小排列,則稱為排序
1.泡破排序法:
排序分為很多型態,泡沫排序是最簡單也是蠻常用的,比較兩個資料,符合特定的排序原則,就將兩個資料對調
2.氣泡排序法:
由小到大排序,比較相鄰的元素,如果第一個元素比第二個元素大就進行交換的動作,
對每一個相鄰元素做同樣事情,所以做到最後一個元素就會是最大的元素了,
針對所有的元素重複上面的步驟,每次都一直做比對,直到不須比較為止

搜尋:
資料搜尋是串列中蠻常使用的一個部分,分為循序搜尋和二分搜尋
循序搜尋:
為逐一搜尋,從串列中第一個串列元素開始,缺點是比較無效率式的
從串列中第一個元素開始搜尋,若無找到目標,繼續搜尋下一個串列元素,直到串列元素全部都搜尋完

二分搜尋:
必須先將串列資料排序好,然後以最中間的數為中心,把資料切成兩半,以最中間的元素跟要搜尋的資料做比較,如果相等就代表著找到資料,如果最中間的元素大於要搜尋的資料,那麼代表要搜尋的資料在另外的一部分,此時可以將比較大的那部分先去除掉,再繼續作搜尋的步驟

演算法的部分:
資料必須先排序,以正中央的元素來做切半的動作,分為較小部分跟較大部分
以正中間的元素和要搜尋的做比較,如果找到資料就結束動作
如果中間的元素大於想要搜尋的數值,就把較大的那半去掉留小的繼續比較
如果中間的元素小於想要搜尋的數值,就把較小的那半去掉留大的繼續比較

使用二分搜尋方法可以提升搜尋速度,但相對來說循序比較沒效率卻是簡單的

亂數函式
randint函式:
randint函式的功能是由指定範圍產生一個整數亂數
亂數套件名稱.randint(起始值,終止值)
執行後呢會產生一個包含起始值與終止值的亂數整數,產生的亂數可能是起始值或是終止值
randrange函式:
randrange函式的功能跟上面的randint類似,但是多了一個遞增值
亂數套件名稱.randrange(起始值,終止值[,遞增值])
執行後呢會產生一個包含起始值但是不包含終止值的,遞增值可有可無
若從0開始每次遞增3 且不包含15(終止值),所以產生的亂數是0、3、6、9、12其中之一
random函式
功能是產生一個0~1之間的浮點數亂數
亂數套件名稱.random()


上一篇
串列排序
系列文
英文資訊與程式相關概念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言