脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python超有趣实例通过冒泡排序来实现LOL厄斐琉斯控枪

Python超有趣实例通过冒泡排序来实现LOL厄斐琉斯控枪

2023-02-09 11:26天海一直在 Python

冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完

今天来给大家讲解一下"冒泡排序"

1、冒泡排序

当给定一个数组arr,使用冒泡排序将其按从小到大的顺序排列。

具体原理网上已经烂大街了,这里我就不去copy了,不懂的小伙伴可以借鉴Python 冒泡排序

定义:冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

有人会说这不是很简单的事情吗,只需要

?
1
2
3
4
5
6
7
8
9
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])

这样做输出的结果就是

12345

2、需求更改和算法介绍

那么,假设有一个数组,数组内有若干位整数,需要以这种过程去排序:使用冒泡排序的方法,当前者比后者小那么就将前者放到序列的末尾,如果后者小于前者,那么需要将后者与前者调换位置,又由于前者小于后者,那么前者会被放到序列末尾,依次类推,当数组内的最大数与最小数进行比较时,默认将大的放到序列末尾

下面举个例子:

假设 arr=[2,5,3,4,1],按照上述方法进行排序arr第一次判断2和5,发现2比5小,将2放到序列的末尾使数组变为[5,3,4,1,2] ,依次类推数组发生变化[5,4,1,2,3]-> [5,1,2,3,4]由于1和5的特殊性,将最大的数放到序列末尾变为[1,2,3,4,5],这样排序就排好了

3、实际应用

本算法专厄斐琉斯控枪而生,厄斐琉斯为英雄联盟的一个特殊ADC,相信玩过英雄联盟这款游戏的大家都很熟悉,更何况2021年EDG夺冠,冠军皮肤为EDG厄斐琉斯。

1、厄斐琉斯简介

厄斐琉斯有五把枪,分别为绿红紫蓝白,其每个枪的功能都不一样,但玩家一直能保持着使用两把枪的状态,且两把枪之间可以随意切换使用,每把枪拥有50发子弹,用完50发后,就可以切换到下一把枪,

最优的顺序,也是大众的顺序为:白绿紫蓝红,因为白和绿契合度很高,红和白契合度很高,蓝和紫契合度很高,蓝和红契合度很高,其他的兼容性比上述组合都要差些(大众认为)。使契合度高的枪械相邻,就会有着很强的战斗力。所以此算法的需求就是将契合度高的枪械排序到相邻位置

注意:5和1其实也是相邻位置

2、代码实现及说明

假设1代表白色,2代表绿色,3代表紫色,4代表蓝色,5代表红色

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#定义"冒泡排序”函数
def bubble(arr):
    for i in range(len(arr)):
        for j in range(0,len(arr)-i-1):
            #判断手中枪械权重是否小于第二把武器,如果小就将其使用掉,如果大就使用另外一把武器
            if arr[0] > arr[1]:
                print("将",arr[0],arr[1],"调换位置,并使用",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数组为最初efls默认枪械(每局初始都为此顺序)              
arr = [2,5,3,4,1]
bubble(arr)
for i in range(len(arr)):
    print("%d" % arr[i])
gun = {1:"白",2:"绿",3:"紫",4:"蓝",5:"红"}
print("此中每个数字代表武器的颜色为",gun)
cur_gun={2:"绿",5:"红",3:"紫",4:"蓝",1:"白"}
# 小的先使用,用掉后掉到排序的最末端,默认5小于1
# [5,3,4,1,2]  [5,4,1,2,3] [5,1,2,3,4] [1,2,3,4,5]

运行结果如下:

2 使用完成,排到最后
[5, 3, 4, 1, 2]
将 5 3 调换位置,并使用 3
[5, 4, 1, 2, 3]
将 5 4 调换位置,并使用 4
[5, 1, 2, 3, 4]
将 5 1 调换位置,并使用 1
1
2
3
4
5
此中每个数字代表武器的颜色为 {1: '白', 2: '绿', 3: '紫', 4: '蓝', 5: '红'}

以上就为默认顺序变为最佳顺序的控枪思路

4、总结

以上就为控枪的主要内容,若需更改初始数组,只需更改arr中的枪械顺序即可。

目前不足就是枪械是由数字来代替的,大家如果能记住每个数字对应的颜色那么就可以。

记住初始顺序的运行结果就可以了哈哈~

本文纯属娱乐并巩固算法知识,切记游戏中不要退出来使用此程序!!

到此这篇关于Python超有趣实例通过冒泡排序来实现LOL厄斐琉斯控枪的文章就介绍到这了,更多相关Python冒泡排序内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/tianhai12/article/details/124845807

延伸 · 阅读

精彩推荐
  • Pythonpython分布式环境下的限流器的示例

    python分布式环境下的限流器的示例

    本篇文章主要介绍了python分布式环境下的限流器的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    扎心了老铁2522020-12-13
  • Pythonpython 生成xml文件,以及美化的实例代码

    python 生成xml文件,以及美化的实例代码

    这篇文章主要介绍了python 生成xml文件,以及美化的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    DongHappyyy5982021-10-19
  • PythonPython爬虫实战之批量下载快手平台视频数据

    Python爬虫实战之批量下载快手平台视频数据

    读万卷书不如行万里路,学的扎不扎实要通过实战才能看出来,本篇文章手把手带你批量下载快手平台视频数据,大家可以在过程中查缺补漏,看看自己掌握...

    松鼠爱吃饼干9582022-01-25
  • PythonPython字节单位转换(将字节转换为K M G T)

    Python字节单位转换(将字节转换为K M G T)

    这篇文章主要介绍了Python字节单位转换(将字节转换为K M G T),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    mighty1310612021-09-12
  • Python利用python实现数据分析

    利用python实现数据分析

    为什么要利用python进行数据分析?python拥有一个巨大的活跃的科学计算社区,拥有不断改良的库,能够轻松的集成C,C++,Fortran代码(Cython项目),可以同时用...

    米油8152020-09-17
  • Python解析目标检测之IoU

    解析目标检测之IoU

    Intersection over Union(IoU)是一种测量在特定数据集中检测相应物体准确度的一个标准。IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(boundi...

    黑暗星球6652021-12-09
  • Pythonpycharm2020.2 配置使用的方法详解

    pycharm2020.2 配置使用的方法详解

    这篇文章主要介绍了pycharm2020.2 配置使用的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    biass12292020-09-17
  • PythonPython爬虫实战之爬取携程评论

    Python爬虫实战之爬取携程评论

    今天带大家爬取携程评论练练手,文中有非常详细的代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下...

    程序员启航10622021-11-20