200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 排序算法-我想做个选择

排序算法-我想做个选择

时间:2020-10-06 14:31:31

相关推荐

排序算法-我想做个选择

今天说排序算法中的选择排序,它的基本思路是这样的,一趟排序过后选出这一趟中最小的值,然后和起始位置的值进行交换,这样排序n次之后就得到了排序后的数据

下面我们用一张图来更清晰的说明这种排序的过程

待排序数组为7,5,4,2

第一趟:从位置0开始也就是数值7,将后面的数字与7做比较。记录较小值的位置,这一趟选择出最小的数字2,最后2与7位置做交换

第二趟:从位置1开始也就是数值为5,将后面的数字与5做比较。选择出最小的数字4,最后4与5位置做交换

第三趟:从位置2开始也就是数值为5(因为他与4做交换了,所以当前的值是5),与后面数字与5做比较,没有比5小的不需要做位置交换

第四趟:从位置3开始也就是数值为7,因为这是数组的最后一个数可以不需要比较,它就为最大值

选择排序的时间复杂度为O(n²)

空间复杂度为O(1)

选择排序不是稳定的排序算法,比如有如下 1,8,[7],7,9数组要排序。我们排序到8这个数,比8小的要排在8之前,[7]、7都比8要小,这一趟之后交换的是后面7,交换之后位置关系是 1,7,[7],8,9。所以是不稳定的排序

最后我们看一下具体的算法

Utils.exchange();

这句的含义是交换数组中两个数的位置

往期文章:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。