Python超有趣實(shí)例通過(guò)冒泡排序來(lái)實(shí)現(xiàn)LOL厄斐琉斯控槍
今天來(lái)給大家講解一下"冒泡排序"
1、冒泡排序
當(dāng)給定一個(gè)數(shù)組arr,使用冒泡排序?qū)⑵浒磸男〉酱蟮捻樞蚺帕小?/p>
具體原理網(wǎng)上已經(jīng)爛大街了,這里我就不去copy了,不懂的小伙伴可以借鑒Python 冒泡排序
定義:冒泡排序(Bubble Sort)也是一種簡(jiǎn)單直觀的排序算法。它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來(lái)是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢"浮"到數(shù)列的頂端。
有人會(huì)說(shuō)這不是很簡(jiǎn)單的事情嗎,只需要
def bubble(arr): for i in range(len(arr)): for j in range(0,len(arr)-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] arr = [2,5,3,4,1] bubble(arr) for i in range(len(arr)): print("%d" % arr[i])
這樣做輸出的結(jié)果就是
12345
2、需求更改和算法介紹
那么,假設(shè)有一個(gè)數(shù)組,數(shù)組內(nèi)有若干位整數(shù),需要以這種過(guò)程去排序:使用冒泡排序的方法,當(dāng)前者比后者小那么就將前者放到序列的末尾,如果后者小于前者,那么需要將后者與前者調(diào)換位置,又由于前者小于后者,那么前者會(huì)被放到序列末尾,依次類(lèi)推,當(dāng)數(shù)組內(nèi)的最大數(shù)與最小數(shù)進(jìn)行比較時(shí),默認(rèn)將大的放到序列末尾
下面舉個(gè)例子:
假設(shè) arr=[2,5,3,4,1]
,按照上述方法進(jìn)行排序arr第一次判斷2和5,發(fā)現(xiàn)2比5小,將2放到序列的末尾使數(shù)組變?yōu)閇5,3,4,1,2] ,依次類(lèi)推數(shù)組發(fā)生變化[5,4,1,2,3]-> [5,1,2,3,4]由于1和5的特殊性,將最大的數(shù)放到序列末尾變?yōu)閇1,2,3,4,5],這樣排序就排好了
3、實(shí)際應(yīng)用
本算法專(zhuān)厄斐琉斯控槍而生,厄斐琉斯為英雄聯(lián)盟的一個(gè)特殊ADC,相信玩過(guò)英雄聯(lián)盟這款游戲的大家都很熟悉,更何況2021年EDG奪冠,冠軍皮膚為EDG厄斐琉斯。
1、厄斐琉斯簡(jiǎn)介
厄斐琉斯有五把槍?zhuān)謩e為綠紅紫藍(lán)白,其每個(gè)槍的功能都不一樣,但玩家一直能保持著使用兩把槍的狀態(tài),且兩把槍之間可以隨意切換使用,每把槍擁有50發(fā)子彈,用完50發(fā)后,就可以切換到下一把槍?zhuān)?/p>
最優(yōu)的順序,也是大眾的順序?yàn)椋喊拙G紫藍(lán)紅,因?yàn)榘缀途G契合度很高,紅和白契合度很高,藍(lán)和紫契合度很高,藍(lán)和紅契合度很高,其他的兼容性比上述組合都要差些(大眾認(rèn)為)。使契合度高的槍械相鄰,就會(huì)有著很強(qiáng)的戰(zhàn)斗力。所以此算法的需求就是將契合度高的槍械排序到相鄰位置
注意:5和1其實(shí)也是相鄰位置
2、代碼實(shí)現(xiàn)及說(shuō)明
假設(shè)1代表白色,2代表綠色,3代表紫色,4代表藍(lán)色,5代表紅色
#定義"冒泡排序”函數(shù) def bubble(arr): for i in range(len(arr)): for j in range(0,len(arr)-i-1): #判斷手中槍械權(quán)重是否小于第二把武器,如果小就將其使用掉,如果大就使用另外一把武器 if arr[0] > arr[1]: print("將",arr[0],arr[1],"調(diào)換位置,并使用",arr[1]) #5和1的邏輯判斷 if arr[0] ==5 and arr[1] == 1: temp = arr[0] arr.append(temp) arr.remove(arr[0]) break arr[0],arr[1] = arr[1],arr[0] #使用掉手中武器,并將其堆到末尾 temp=arr[0] arr.append(temp) arr.remove(arr[0]) print(arr) if arr[0] < arr[1]and arr[0]!=1: print(arr[0],"使用完成,排到最后") temp = arr[0] arr.append(temp) arr.remove(arr[0]) print(arr) #定義arr數(shù)組為最初efls默認(rèn)槍械(每局初始都為此順序) arr = [2,5,3,4,1] bubble(arr) for i in range(len(arr)): print("%d" % arr[i]) gun = {1:"白",2:"綠",3:"紫",4:"藍(lán)",5:"紅"} print("此中每個(gè)數(shù)字代表武器的顏色為",gun) cur_gun={2:"綠",5:"紅",3:"紫",4:"藍(lán)",1:"白"} # 小的先使用,用掉后掉到排序的最末端,默認(rèn)5小于1 # [5,3,4,1,2] [5,4,1,2,3] [5,1,2,3,4] [1,2,3,4,5]
運(yùn)行結(jié)果如下:
2 使用完成,排到最后
[5, 3, 4, 1, 2]
將 5 3 調(diào)換位置,并使用 3
[5, 4, 1, 2, 3]
將 5 4 調(diào)換位置,并使用 4
[5, 1, 2, 3, 4]
將 5 1 調(diào)換位置,并使用 1
1
2
3
4
5
此中每個(gè)數(shù)字代表武器的顏色為 {1: '白', 2: '綠', 3: '紫', 4: '藍(lán)', 5: '紅'}
以上就為默認(rèn)順序變?yōu)樽罴秧樞虻目貥屗悸?/p>
4、總結(jié)
以上就為控槍的主要內(nèi)容,若需更改初始數(shù)組,只需更改arr中的槍械順序即可。
目前不足就是槍械是由數(shù)字來(lái)代替的,大家如果能記住每個(gè)數(shù)字對(duì)應(yīng)的顏色那么就可以。
記住初始順序的運(yùn)行結(jié)果就可以了哈哈~
本文純屬娛樂(lè)并鞏固算法知識(shí),切記游戲中不要退出來(lái)使用此程序!!
到此這篇關(guān)于Python超有趣實(shí)例通過(guò)冒泡排序來(lái)實(shí)現(xiàn)LOL厄斐琉斯控槍的文章就介紹到這了,更多相關(guān)Python冒泡排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flask 入門(mén)系列 Cookie與session的介紹
這篇文章主要給大家分享的是 Flask 入門(mén)系列 Cookie與session的介紹,下面文字圍繞 Cookie與session的相關(guān)資料展開(kāi)詳情,需要的朋友可以參考一下,希望對(duì)大家有所幫助2021-11-11淺談python函數(shù)調(diào)用返回兩個(gè)或多個(gè)變量的方法
今天小編就為大家分享一篇淺談python函數(shù)調(diào)用返回兩個(gè)或多個(gè)變量的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01解決python3 urllib 鏈接中有中文的問(wèn)題
今天小編就為大家分享一篇解決python3 urllib 鏈接中有中文的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07python sorted函數(shù)原理解析及練習(xí)
這篇文章主要介紹了python sorted函數(shù)原理解析及練習(xí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Python XML RPC服務(wù)器端和客戶(hù)端實(shí)例
這篇文章主要介紹了Python XML RPC服務(wù)器端和客戶(hù)端實(shí)例,本文給出了實(shí)現(xiàn)代碼以及運(yùn)行效果,需要的朋友可以參考下2014-11-11python中np.multiply()、np.dot()和星號(hào)(*)三種乘法運(yùn)算的區(qū)別詳解
這篇文章主要介紹了python中np.multiply()、np.dot()和星號(hào)(*)三種乘法運(yùn)算的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能示例
這篇文章主要介紹了Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能,簡(jiǎn)單介紹了wget安裝以及Python使用wget下載tar格式網(wǎng)絡(luò)文件并進(jìn)行解壓處理相關(guān)操作技巧,需要的朋友可以參考下2018-05-05