临近双十一,相信大家在疯狂淘宝的过程中一定注意到这么一个按钮

那价格是如何排序的呢?我们能否通过EV3进行数字的排序呢?最近整理了一下使用EV3完成的各种排序方法,后续也会继续更新,此篇幅作为先行章,详细讲一下索引排序法。
在排序时,若是数据很复杂,对数据的移动显然是费时的。若把数据移动改为索引移动,则减少了操作复杂度。计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。
我们的任务为将随机生成的5个数字进行索引排序,我们先来详细看一看数组中元素重复只需要显示一次的情况。
往随机数对应的索引位置写入1,写完之后进行数组遍历,将组合数组内的数值和1进行比较,等于1时显示该数值对应的索引,遍历一次就能完成排序。
从索引0开始遍历,完成从小到大排序,从最大索引(长度减1)开始遍历,则完成从大到小排序,这样的方法出现重复数值时,排序过程中只会显示一次。
(需要明确的是,随机生成的数字要作为索引,并且记录为1其他索引位的值为0)。
-将循环索引的值存入一个数字变量中,因为5个随机数要在5次循环中依此显示,使用循环索引,逐渐扩大y轴的坐标,使得5个数字在一排有序排列。
程序解读:清除屏幕,循环索引存入n1,往数组A中随机数对应的位置存入1(其余位置默认为0)并通过变量n1将随机数依次显示在屏幕上,重复执行5次。
-增大y坐标的值,不能与第一部分程序的显示的数字重合。
程序解读:循环索引存入变量sy中,依次读取数组A中的数值和1进行比较,等于1则将其显示在屏幕上,并将变量n加1,读取数组A长度控制循环次数,循环外加个等待即可。
变量n的功能是控制排序过程中的数值的显示位置,同时它也统计了遍历过程中数值为1的数值个数,它的最大值为5,循环也可在n等于5时结束。
这种情况下,随机数的最大值为数组的长度减1,随机数的最小值为第一个等于1处的索引值。
效果展示:由于取值范围较大,多次试验后并未出现重复的数字。
数组长度减1得到最大索引,循环索引从0开始变化,做减法运算之后,得到的索引值是从大到小变化。
那么数组中元素出现重复需要重复显示的情况我们怎么处理呢?

根据动图的提示,各位自己试一试。
解决不了的难点→逐步转化→可解决的问题→解决后组合
在我们学习完索引排序的方法之后,对于初学者来说,将问题简化是很重要的,我们将难题分解,分解成一个个容易解决的小问题后,结合EV3模块化的编程平台,很容易找到突破口,再经过反复调试,就能成功。
就像无论多复杂的程序在计算机看来也都只是0与1的影子。
