怎么用python来实现在校生说排序算法的可视化的?
Python培训机构粤嵌科技表示,在人工智能化的时代,现在的python已经成为开发行业比较吃香的一门开发语言了。对于想要学习python的人来说当然是想要了解更多关于python技术方面的知识点了,下面粤嵌科技的小编就来给大家整理一篇关于怎么用python来实现排序算法的可视化技术,让大家可以更加直观的了解python。

一、如何表示数组
python提供了list类型,很方便可以表示C++中的数组。标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间预测(数据为往年仅供参考),再次就不详细论述。
二、如何得到随机采样数组,数组有无重复数据
假设我希望数组长度是100,而且我希望数组的大小也是在[0,100)内,那么如何得到100个随机的整数呢?可以用random库。
示例代码:
import random
data = list(range(100))
data = random.choices(data, k=100)
print(data)
[52, 33, 45, 33, 48, 25, 68, 28, 78, 23, 78, 35, 24, 44, 69, 88, 66, 29, 82, 77, 84, 12, 19, 10,
27, 24, 57, 42, 71, 75, 25, 1, 77, 94, 44, 81, 86, 62, 25, 69, 97, 86, 56, 47, 31, 51, 40, 21, 41,
21, 17, 56, 88, 41, 92, 46, 56, 80, 23, 70, 49, 96, 83, 54, 16, 36, 82, 24, 68, 60, 16, 98, 16, 81,
10, 13, 11, 24, 68, 35, 56, 39, 23, 44, 6, 30, 3, 60, 56, 66, 38, 28, 47, 47, 25, 90, 89, 38, 68,
21]
但是以上代码有个问题,random.choices是对一个序列进行重复采样,得到的数组存在重复数据,那如果不希望存在重复数据,而是希望进行无重复采样,怎么办?
可以用random.sample函数,示例代码:
data = random.sample(data, k=100)
print(data)
[49, 28, 56, 28, 44, 62, 81, 25, 48, 33, 54, 38, 30, 16, 13, 19, 23, 56, 60, 66, 41, 24, 68, 68,
77, 92, 78, 24, 66, 3, 80, 94, 78, 41, 84, 88, 21, 56, 25, 25, 75, 24, 38, 82, 31, 52, 23, 10,
71, 40, 27, 46, 33, 35, 56, 51, 1, 23, 12, 25, 89, 16, 21, 21, 11, 42, 47, 44, 81, 35, 86, 88,
29, 36, 77, 16, 39, 6, 57, 69, 96, 68, 24, 86, 97, 90, 69, 10, 68, 98, 56, 44, 83, 47, 70, 17,
47, 82, 60, 45]
这样就可以得到无重复采样数据了。
三、如何实现排序算法
算法种类较多,就不一一举例;再次就以希尔排序(Shell Sort)为例讲讲:
尔排序的原理:希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
基础的插入法排序是两重循环,希尔排序是三重循环,最外面一重循环,控制增量gap,并逐步减少gap的值。二重循环从下标为gap的元素开始比较,依次逐个跨组处理。***一重循环是对组内的元素进行插入法排序。这样进行排序的优点在于每次循环,整个序列的元素都将小元素的值逐步向前移动,数值比较大的值向后移动。
示例代码:
from data import DataSeq
def ShellSort(ds):
assert isinstance(ds, DataSeq), "Type Error"
Length = ds.length
D = Length//2
while D>0:
i=0
while i<Length:
tmp = ds.data[i]
j=i
while j>=1 and ds.data[j-D]>tmp:
ds.SetVal(j, ds.data[j-D])
j-=D
ds.SetVal(j, tmp)
i+=D
D//=2
if __name__ == "__main__":
ds=DataSeq(64)
ds.Visualize()
ds.StartTimer()
ShellSort(ds)
ds.StopTimer()
ds.SetTimeInterval(0)
ds.Visualize()
四、如何把数组可视化出来
有了随机数组初始化方法,再实现好排序函数,我们还差一步,就是把排序函数中每次移动数组后将数组可视化并输出。
对数组进行可视化,很容易想到python的可视化工具matplotlib!但是在项目中我并没有用matplotlib,而是用了numpy+opencv。
为什么不用matplotlib?
因为在排序过程中,每次修改数组,都希望能够实时修改图片并输出,matplotlib确实很方便,但是matplotlib的效率实在是不高,而且每次修改数组前后的两幅图片其实是差不多的。如果用matplotlib,每次都是要重新绘制图片,非常耗时!
所以考虑自己生成图片,在每次修改数组后,只将图片中改动的那两列进行修改即可!这样就比用matplotlib每次重新绘制图片效率高得多!
数组中主要有两种操作,一种是对某个idx赋值,一种是交换某两个idx的值。
示例代码:
class DataSeq:
WHITE = (255,255,255)
RED = (0,0,255)
BLACK = (0,0,0)
YELLOW = (0,127,255)
def __init__(self, Length, time_interval=1, sort_title="Figure", repeatition=False):
pass
def Getfigure(self):
_bar_width = 5
figure = np.full((self.length*_bar_width,self.length*_bar_width,3), 255,dtype=np.uint8)
for i in range(self.length):
val = self.data[i]
figure[-1-val*_bar_width:, i*_bar_width:i*_bar_width+_bar_width] = self.GetColor(val, self.length)
self._bar_width = _bar_width
self.figure = figure
def _set_figure(self, idx, val):
min_col = idx*self._bar_width
max_col = min_col+self._bar_width
min_row = -1-val*self._bar_width
self.figure[ : , min_col:max_col] = self.WHITE
self.figure[ min_row: , min_col:max_col] = self.GetColor(val, self.length)
def SetVal(self, idx, val):
self.data[idx] = val
self._set_figure(idx, val)
self.Visualize((idx,))
def Swap(self, idx1, idx2):
self.data[idx1], self.data[idx2] = self.data[idx2], self.data[idx1]
self._set_figure(idx1, self.data[idx1])
self._set_figure(idx2, self.data[idx2])
self.Visualize((idx1, idx2))
以上就是粤嵌科技的小编给大家整理的关于怎么用python来实现排序算法的可视化的文章了。如果说你想要了解更多关于python技术上面的问题的话,那么可以点击我们文章下面的获取试听资格按钮来获取和我们python讲师面对面交流的机会,可以解答你更多的疑惑。
本文地址:https://www.55jiaoyu.com/show-53230.html
本文由合作方发布,不代表展全思梦立场,转载联系作者并注明出处:展全思梦
热门文档
- 1.朔州市二中(朔州市二中2022中考录取分数线预测(数据为往年仅供参考)预测)
- 2.粮食工程专业就业方向及前景!附2025大学排名及分数线预测(数据为往年仅供参考)
- 3.广州市公用事业技师学院(广州市公用事业技师学院金盘岭校区)
- 4.武汉江南技术学校(武汉市青山区江南技术学校)
- 5.中山医(中山医科大学***附属医院)
- 6.龙冈中学(龙冈中学录取分数线预测(数据为往年仅供参考)预测2022)
- 7.可模仿的世界名画100幅人物可模仿的世界名画100幅人物男_...(少女世界名画人物肖像)
- 8.砚眼文言文翻译(砚眼文言文翻译仆人的错误用一个成语概括)
- 9.双刀歌词双刀歌曲(双刀歌词歌词是什么意思)
- 10.2025新高考八省联考填报志愿模拟演练入口:附填报方式、时间预测(数据为往年仅供参考)
推荐文档
- 11.2023年青岛电子学校招生录取分数线预测(数据为往年仅供参考)
- 12.三顾茅庐的顾什么意思(三顾茅庐中的顾是什么意思这个成语的意思是什么)
- 13.什么叫做淡季(什么叫做淡季和旺季)
- 14.形容流口水的成语(形容流口水的成语望闻生津)
- 15.KurtCobain为什么自杀(kurtcobain为什么自杀)
- 16.值机柜台是什么意思(值机柜台是什么意思F06-H10什么意思)
- 17.地球赤道一圈多长(地球赤道一圈多长广州,北京,航程)
- 18.如何报考大学生村官(怎么考村官大学生村官怎么考)
- 19.猪的英语怎么读(猪的英语怎么读,单词怎么写)
- 20.宰相是几品(宋代宰相是几品)
- 21.梦到和婆婆吵架预示着什么(梦到和婆婆吵架预示着什么周公解梦)
- 22.商学是什么专业(目前热门专业十大最吃香专业)
- 23.新冠肺炎的全称是什么(新冠肺炎的全称是新型冠状病毒肺炎)
- 24.坤位是什么方向(大六壬入门基础知识教程)
- 25.江西中考成绩怎样查(江西中考成绩怎么查询2021)
- 26.开头的四字成语(集合16篇)(开头的四字词语有哪些)
- 27.容身之地什么意思(容身之地的容是什么意思)
- 28.段开头的成语接龙(段开头的成语接龙大全集最长)
- 29.寻觅的作文10篇(寻觅的作文10篇三年级)
- 30.皖l是安徽哪个城市的车牌代码(皖l是安徽哪个城市的车牌)
- 31.更多音字组词(更多音字组词和拼音怎么写)
- 32.皖南事变发生在什么时候(皖南事变发生在什么时候开始)
- 33.形容一个人有钱的四字成语(形容一个人有钱的四字成语有哪些)
- 34.第二个字是争的成语(第二个字是争的成语有哪些)
- 35.范睢念ju还是sui(睢盱读suixu还是huixu)
- 36.布达拉宫简笔画布达拉宫简笔画图片儿童(布达拉宫简笔画又好看又漂亮)
- 37.纸上谈兵指的是谁(纸上谈兵指的是谁指鹿为马指的是谁乐不思蜀指的是谁)
- 38.少先队入队仪式新生代表演讲稿10篇(新少先队员入队仪式发言稿)
- 39.虎皮鹦鹉寿命多少(虎皮鹦鹉的寿命一般是多少年)
- 40.禅悟是什么意思(禅悟人生修心修行人生感悟)
- 41.生活在意大利的华人告诉你,意大利移民到底好不好(如今意大利移民的问题很严重吗)
- 42.朝花夕拾优美段落摘抄10篇(朝花夕拾优美段落摘抄10篇50字)
- 43.过年春节的画怎么画过年春节的画怎么画简单好看(2021春节画怎么画简单又好看)
- 44.形容互相支援的成语(比喻互相支持互相帮助的成语)
- 45.达尔文_三字歌谱_乐谱_(达尔文这首歌的歌词)
- 46.whole(wholeheartedly)
- 47.河南高考分数线预测(数据为往年仅供参考)2025一本、二本、专科一览表
- 48.山西2025年高考录取分数线预测(数据为往年仅供参考)一览表(含本、专科批)
- 49.西南科技大学教务系统登录入口(西南科技大学教务系统登录入口网址)
- 50.安阳师范学院教务处登录入口(安阳师范学院教务处登录入口官网)
- 51.輲车是什么意思輲车的解释是什么(notch×herobrine车)
- 52.上海黄浦区有多少平方公里(上海黄浦区占地面积是多少平方千米)
- 53.brick是什么意思brick的翻译(bricks是什么意思英语翻译)
- 54.龟缸怎么处理龟便
- 55.四书是指什么五经是指什么
- 56.结婚彩礼钱法律上归谁
- 57.成龙代言佳能什么型号
- 58.红酒要醒多久才好喝
- 59.婚姻料理电视剧情
- 60.人生只若如初见的意思
- 51.内江市职高学校推荐
- 52.武汉工程学院专升本是几本
- 53.内江市机电机械学校食堂条件怎么样
- 54.专升本和自考本哪个含金量高
- 55.内江市幼儿师范学校毕业后会安排实习吗
- 56.河南理工大学专升本在那个校区
- 57.宝鸡职业技术学院升本率是多少
- 58.内江市空乘学校毕业后分配工作吗
- 59.河南二本学校有哪些
- 60.2024年四川科技职业学院咋样报名(四川科技职业学院招生网)
- 61.什么时候适合用七月流火来形容
- 62.就业前景好的六大铁路专业
- 63.紫蝴蝶的养殖方法和注意事项
- 64.成都铁路工程学校学费多少?有补助吗?
- 65. 又涨?5月全国程序员工资出炉,比之4月涨了近500元
- 66.针灸推拿的一些基础概述
- 67.眉毛刮了还能长出来吗
- 68.卡放在一起会消磁吗
- 69.***五冶大学(高新校区)电气工程与自动化专业(轨道牵引)简介
- 70.西安体育运动学校往年招生简章

