排序之选择排序
2023-12-14 08:42:20
????????选择排序算法是一种原址比较排序算法。选择排序大致的思路是找到数据结构中的最小值并
将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推。
????????下面是选择排序算法的源代码:????????
var selectionSort = function(array){
var length = array.length, // {1}
indexMin
for(var i=0;i<array.length-1;i++){ // {2}
indexMin=i // {3}
for(var j=i;j<length;j++){ // {4}
if(array[indexMin]>array[j]){ // {5}
indexMin=j // {6}
}
}
if(i!== indexMin){ // {7}
swap(array,i,indexMin)
}
}
}
????????首先声明一些将在算法内使用的变量(行{1})。接着,外循环(行{2})迭代数组,并控制迭代轮次(数组的第n个值——下一个最小值)。我们假设本迭代轮次的第一个值为数组最小值(行{3})。然后,从当前i的值开始至数组结束(行{4}),我们比较是否位置j的值比当前最小值小(行{5});如果是,则改变最小值至新最小值(行{6})。当内循环结束(行{4}),将得出数组第n小的值。最后,如果该最小值和原最小值不同(行{7}),则交换其值。
????????下面的示意图展示了选择排序算法,此例基于之前代码中所用的数组。
????????数组底部的箭头指示出当前迭代轮寻找最小值的数组范围(内循环{4}),示意图中的每一
步则表示外循环。
????????选择排序同样也是一个复杂度为O(n2)的算法。和冒泡排序一样,它包含有嵌套的两个循环,这导致了二次方的复杂度。然而,接下来要学的插入排序比选择排序性能要好。
文章来源:https://blog.csdn.net/weixin_52878347/article/details/134958171
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!