选择排序是一种简单直观的排序算法
选择法排序指每次选择所要排序的数组中的最大值(由大到小排序,由小到大排序则选择最小值)的数组成员,将这个数组成员的值与最前面没有进行排序的数组成员的值互换。
在实例中,Temp变量用于存储数值最小的数值,Pos变量用于存储成员位置,然后通过双层循环对A数组进行选择法排序,最后将排序好的数组进行输出。代码如下
代码解析:设置一个嵌套循环,第一层循环为前9个数组成员,并在每次循环时将对应当前次数的数组成员设置为最小值;在第二层循环中,循环比较该成员之后的各个数组成员,并将每次比较的结果中较小的数设置为最小值,在第二层循环结束时,将最小值与开始时设置为最小值的数组成员进行互换。当所有循环都完成以后,就将数组成员按照从小到大的顺序重新排列了。
算法步骤
1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3、重复第二步,直到所有元素均排序完毕。
选择排序演示
.版本 2 .支持库 spec .局部变量 A, 整数型, , "10" .局部变量 I, 整数型 .局部变量 K, 整数型 .局部变量 Temp, 整数型 .局部变量 Pos, 整数型 A = { 68, 43, 31, 15, 67, 99, 76, 43, 19, 26 } .计次循环首 (9, I) Temp = A [I] ' 设置当前成员为最小值 Pos = I ' 记录成员位置 .变量循环首 (I + 1, 10, 1, K) .如果真 (A [K] < Temp) ' 如果当前成员比最小值还小 Temp = A [K] ' 重新设置最小值 Pos = K ' 记录成员位置 .如果真结束 .变量循环尾 () ' 交换两个成员的值 A [Pos] = A [I] A [I] = Temp .计次循环尾 () 调试输出 (A)
选择排序模块
.版本 2 .子程序 选择排序 .参数 参数组, 整数型, 数组 .局部变量 数量, 整数型 .局部变量 临时, 整数型 .局部变量 位置变量, 整数型 .局部变量 未比变量, 整数型 .局部变量 放置变量, 整数型 数量 = 取数组成员数 (参数组) .如果真 (数量 ≤ 0) 返回 () .如果真结束 .变量循环首 (1, 数量 - 1, 1, 位置变量) 放置变量 = 位置变量 .变量循环首 (位置变量 + 1, 数量, 1, 未比变量) .如果真 (参数组 [放置变量] > 参数组 [未比变量]) ' // 寻找最大的数 放置变量 = 未比变量 .如果真结束 .变量循环尾 () 临时 = 参数组 [放置变量] 参数组 [放置变量] = 参数组 [位置变量] 参数组 [位置变量] = 临时 .变量循环尾 ()