需要绕一绕的选择排序算法
选择排序算法:
题目:将十个数用选择排序法从小到大进行排序
选择排序算法的思路:
第一步:在1~n个数中找出最小数,然后与第一个数交换,前面一个数已经排好;
第二步: 在2~n个数中找出最小数,然后与第二个数交换,前面两个数已经排好;
……
第n-1步:在n-1~n个数中找出最小数,然后与第n-1个数交换,排序结束
例如:
2 5 4 1 3
第一轮:2与1交换 得 1 5 4 2 3
第二轮:2与5交换 得 1 2 4 5 3
第三轮:3与4交换 得 1 2 3 5 4
第四轮:4与5交换 得 1 2 3 4 5
算法分析:
1.两层循环,最外层控制轮数,一共为n-1轮,第二层循环一一比较,选出最小的。
2.选出最小的后,与无序组的第一个元素进行比较,因此需要标记无序组的第一个元素,并且与最小的元素进行比较,如果不是同一个元素,则交换。
代码:
运行结果: