前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经典排序之选择排序

经典排序之选择排序

作者头像
腿子代码了
发布2023-10-08 10:41:17
1470
发布2023-10-08 10:41:17
举报
文章被收录于专栏:腿子代码了专栏

选择排序

排序含义

了解一个知识,必须要从其含义开始。 什么是选择排序呢,用一个例子来解释:仍然是同学排队问题 假设有A、B、C、D四位同学,该四位同学是身高大小情况为【B>A>D>C】,且目前的顺序为【A、B、C、D】 接下来用选择排序的思维为他们设计排序方法。 首先,在四位同学中挑选一位最低的同学将其和第一位同学交换位置,也就是C同学和A同学交换位置。此时的排序占位为【C、B、A、D】。接下来,不在管理第一位同学,将B同学,位于第二位的同学,和剩下的A和D同学中选择一个最小的同学,和B同学比较,发现其中的D同学身高最低,那么就将D同学和B同学调换位置。此时的位置顺序为【C、D、A、B】。接着,再看第三位A同学,在后几位同学中选择最低的同学。也就是B同学,与A同学比较身高。发现A同学为最低的同学,那么将不交换位置。此时的位置顺序仍为【C、D、A、B】。此时剩余最后一个元素(同学B),为最高同学,不进行比较。 通过这一个小例子可以大概了解到选择排序的含义。

排序图例

身高顺序以及排队成员

开始排序 第一轮 ​

此时排序顺序为

第二轮排序

此时的排序顺序

第三轮比较

发现此时的A小于B,所以不发生交换。 此时的排序顺序为

此时排序结束

代码实现

声明一个待排序的数组

代码语言:javascript
复制
var  arr=[12,53,62,34,8,28,42,75];

排序代码

代码语言:javascript
复制
for(var i=0;i<arr.length-1;i++){
        var key=i;
        for(var j=i+1;j<arr.length;j++){
            if(arr[j]<arr[key]){
                key=j;
            }
        }   
        if(key!==i){
            var temp=arr[i];
            arr[i]=arr[key];
            arr[key]=temp;
        }
     }

代码解析

外侧for循环

代码语言:javascript
复制
for(var i=0;i<arr.length;i++){
	//循环体
}

外侧for循环主要作用是遍历每一个元素

标记值key

代码语言:javascript
复制
 var key=i;

标记需要比较的值

最小值 通过for循环遍历,找出最小的值。

代码语言:javascript
复制
for(var j=i+1;j<arr.length;j++){
            if(arr[j]<arr[key]){
                key=j;
            }
        } 

交换值

代码语言:javascript
复制
if(key!==i){
            var temp=arr[i];
            arr[i]=arr[key];
            arr[key]=temp;
        }

如果标记的值等于当前当前循环数,则说明最小值为本身,当标记值不等于当前循环的此时时,则将这两个值进行交换位置,以达到交换值的作用。

总结

顺序排序、插入排序、选择排序等等虽然都是针对一种情况来解释,但是通过解决一个问题提供多个解决方法方面来看,不同的算法有这不同的优势。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 选择排序
    • 排序含义
      • 排序图例
        • 代码实现
          • 代码解析
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档