Go语言写的选择排序

2023-11-20

选择排序是不稳定的排序算法,不稳定发生在最小元素与A[i]交换的时刻。

  比如序列:{ 5, 8, 5, 2, 9 },一次选择的最小元素是2,然后把2和第一个5进行交换,从而改变了两个元素5的相对次序。

package main

import(
    "fmt"
)


//选出最大的排到最后面
func select_sort(a []int){

    index := 0
    for i := 0; i < len(a)-1; i++{//外层循环(冒泡和选择排序)是从0到len-2
        index = len(a) - 1 - i//默认每次排序完最大元素的下标是未排序的最后一个
                            //(要保证最后一次比较是a[0]和a[1]比较,所以外层循环最多到len-2)
                            //len(a) - 1 - i也就是未排序序列的末尾
        for j := 0; j < len(a) - 1 - i; j++{//内层循环针对未排序的序列,默认最后部分是排序的,所以最后一个元素是len-2
            if a[j] > a[index] {//记录未排序序列中最大值的下标
                index = j//更新下标
            }
        }

        if index != len(a) - 1 - i{//将未排序序列中的最大值放到未排序序列最后的位置
            a[index],a[len(a)-1-i] = a[len(a)-1-i],a[index]
        }
    }
}


//选出最小值放到序列前端
func select_sort2(a []int){
    min := 0//最小值下标
    for i := 0; i < len(a) - 1;i++{// i为已排序序列的末尾
        min = i
        for j := i+1;j < len(a);j++{// 未排序序列
            if a[j] < a[min]{// 找出未排序序列中的最小值
                min = j
            }
        } 

        if min != i{// 放到已排序序列的末尾,该操作很有可能把稳定性打乱,所以选择排序是不稳定的排序算法
            a[min], a[i] = a[i],a[min]
        }
    }
}

func main(){
    b := [...]int{8,7,6,1,4,3,2,5}
    select_sort(b[:])
    fmt.Println(b)

    c := [...]int{8,7,6,1,4,3,2,5}
    select_sort2(c[:])
    fmt.Println(c)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go语言写的选择排序 的相关文章

  • Vue3中的pinia使用(收藏版)

    1 pinia介绍 个人网站 紫陌 笔记分享网 想寻找共同学习交流 共同成长的伙伴 请点击 前端学习交流群 pinia 是 Vue 的存储库 它允许您跨组件 页面共享状态 就是和vuex一样的实现数据共享 依据Pinia官方文档 Pinia
  • 【Python】Python 模式匹配与正则表达式

    Python 模式匹配与正则表达式 1 模式匹配与正则表达式 你可能熟悉文本查找 即按下Ctrl F 输入你要查找的词 正则表达式 更进一步 它们让你指定要查找的 模式 你也许不知道一家公司的准确电话号码 但如果你住在美国或加拿大 你就知道
  • 21,verilog之宏define介绍

    注 学习 交流就在博主的个人weixin公众号 FPGA动力联盟 留言或直接 博主weixin fpga start 私信 宏define提供用一个相对简单的文字来表示一大段真正有意义的文字作用 换句话说 就是综合软件见到定义的宏 就用这个
  • uni-app页面点击tab左右滑动(swiper)

    uni app基于
  • 自动化测试工具——selenium 用前须知

    OK 经过上的过程 我相信你一定做出的相应的选择 如果你选择的是selenium 工具 那么接着往下阅读 首选你在开始selenium之前 需要花一到两个月时间去学一门语言 这里是根据没有语言基础的同学而定的 我推荐ruby python
  • swing重定向输出到jtextArea

    import java awt Font import java io IOException import java io OutputStream import java io PrintStream import javax swin
  • Android Studio 中模拟器无法打开,提示Error launching emulator

    一 遇到的问题 运行模拟器时 提示 Error launching emulator 二 解决方法 打开SDK Manager 点击取消Android Emulator 然后重新运行 会提示下载一些文件 按着操作即可 如果没问题就不需要取消
  • 深入解析String intern()

    在 JAVA 语言中有8中基本类型和一种比较特殊的类型String 这些类型为了使他们在运行过程中速度更快 更节省内存 都提供了一种常量池的概念 常量池就类似一个JAVA系统级别提供的缓存 8种基本类型的常量池都是系统协调的 String类
  • Python3.8安装tensorflow

    我现在的版本是3 8 8 64 bit 编辑器是Visual Studio Code 之前试过好多次都失败了 都是因为Python的版本和tensorflow版本的各种问题 后来下过anaconda 用不习惯 还是回来捯饬Visual St
  • onenote导入html文件,office js - OneNote Add in: Getting HTML content - Stack Overflow

    In the example code is provided to get RichText It is able to get the plain text content of the page but I cannot seem t
  • css之id选择器和class类选择器

    一 css基础 css定义 可以设置网页中的样式 外观 美化 css中文名字 级联样式表 层叠样式表 样式表 二 css基础语法 1 style标签写在title标签后面 2 选择器 属性名1 属性值1 属性名2 属性值2 color 代表
  • leetcode第8场双周赛

    这次双周赛有意外 第二第三题按照提示返回int 会报错 要返回List 第一题 给你一个字符串 S 返回只含 单一字母 的子串个数 示例 1 输入 aaaba 输出 8 解释 只含单一字母的子串分别是 aaa aa a b aaa 出现 1
  • axios和Ajax

    Ajax 由客户端请求ajax引擎 再由ajax引擎请求服务器 服务器作出一系列响应之后返回给ajax引擎 由ajax引擎决定将这个结果写入到客户端的什么位置 实现页面无刷新更新数据 创建Ajax步骤 1 创建异步对象 2 设置回调函数 U
  • 在ubuntu18.04上搭建的海思Hi3516EV200的编译环境

    准备工作 下载交叉编译工具 百度网盘 https pan baidu com s 1AL3EztPUpWZOpxdbyEnI w 提取码 w2k7 ubuntu版本 uname v 55 18 04 1 Ubuntu SMP Mon Jun
  • matlab 计算点云中值

    目录 一 概述 1 算法概述 2 主要函数 二 代码示例 三 结果展示 四 参数解析 输入参数 输出参数 五 参考链接 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述
  • Git的使用(gitbash命令创建版本库)

    1 git的安装 msysgit gitbash 2 创建repository 路径名不要含有中文 pwd 查看当前路径 cd mkdir gitLearn 创建目录 cd gitLearn 进入路径 git INIT 初始化 编程git可
  • 如何替换对象的key值

    发生的场景 现在用antd组件库 有些组件想渲染数据的话 我要根据他们官网给的字段名称对应起来才能渲染上去 这个是复选框选中 保存的时候 字段需要按照后台约定的传入code value 1 常规循环遍历 大招来了 哈哈哈 才疏学浅 我觉得是
  • Python学习----第十章--文件和异常及json

    1 读取文件 lstrip 删除左边空白符 rstrip 删除右边空白符 strip 删除两端空白符 window 读取文件可以用 但是在字符串中 是被当作转义字符来使用 经过转义之后可能就找不到路径的资源了 例如 t会转义为tab键 这里

随机推荐

  • Protobuf安装步骤

    今天看Brpc开源代码的时候 看到了里面提到了google开源的protobuf的数据序列化和反序列工具 所以特地下了源码 试着看下一个简单的使用过程 1 protobuf的介绍 google protobuf是一个灵活的 高效的用于序列化
  • 【python】调用Matplotlib库绘制扇形图(饼图)

    代码部分 扇形图 import matplotlib pyplot as plt import matplotlib as mpt mpt rcParams font family fangsong labels apple orange
  • GIT高级使用技巧

    GIT高级使用技巧 导出GIT日志到文件 按照 lt 哈希 gt lt 作者名 gt lt 作者邮箱地址 gt lt 作者日期 gt
  • 零基础新手小白学编程必会的100个代码

    前言 我记得刚开始接触编程的时候 觉得太难了 也很好奇 写代码的那些人也太厉害了吧 全是英文的 他们的英文水平一定很好吧 他们是怎么记住这么多代码格式的 而且错了一个标点符号 整个程序都会有影响 一个程序几千行 错一个标点符号都不行这也太难
  • leetcode-分割字符串的方案数

    给你一个二进制串 s 一个只包含 0 和 1 的字符串 我们可以将 s 分割成 3 个 非空 字符串 s1 s2 s3 s1 s2 s3 s 请你返回分割 s 的方案数 满足 s1 s2 和 s3 中字符 1 的数目相同 由于答案可能很大
  • 密码学理论10:密钥管理和公钥革命

    加密密钥分发 对称密码 依赖于秘密密钥的安全分发 需要存储和管理大量密钥 在开放 公共系统中遇到严重问题 部分解决方案 密钥分发中心 KDC 某些服务器 密钥分发中心 KDC 将密钥 提供 给用户 它与每个用户共享一个秘密密钥 长期密钥 并
  • 计算机系统攻击 ms17-010漏洞利用技术 永恒之蓝复现

    概述 MS17 010是指微软于2017年发布的一个安全公告编号为MS17 010的漏洞 也被称为 EternalBlue 该漏洞影响了微软的Windows操作系统 并且被发现可被利用来进行远程代码执行攻击 这个漏洞的危险性在于它允许攻击者
  • 基于Docker搭建FastDFS分布式文件系统

    1 镜像拉取 docker pull morunchang fastdfs 2 运行 docker run d name tracker net host morunchang fastdfs sh tracker sh 3 运行stora
  • Python下拉选框

    看了我密码器讲解的朋友们一定知道 里面有个叫下拉选框的知识 今天我就来讲讲下拉选框 from PyQt5 QtWidgets import QWidget QLabel QComboBox QApplication import sys c
  • 数据分箱3——决策树分箱(有监督)

    思路比较简单 将某一列数据作为训练集 将label作为结果 直接训练一个决策树 然后根据决策树的分裂节点的阈值作为分箱的依据 sklearn的决策树文档 https scikit learn org stable modules gener
  • CSS 实现不规则元素的阴影

    大伙在工作中 尤其写页面样式 相信很多地方用到 box shadow 阴影属性 但是这个属性只能用到规则的元素上 亦或者说只能用到一个元素上 那当我们遇到不规则的元素时 想加阴影就比较棘手了 但是 CSS 提供了此问题的解决方案 今天 我们
  • Using TensorFlow backend.

    运行代码总是出现以下几个问题 但是代码能运行出来 问题一 Using TensorFlow backend 问题二 WARNING Logging before flag parsing goes to stderr 问题三 Spyder中
  • 【转载】三维重建(三)相机参数标定与光束平差法(Bundle Adjustment)

    https blog csdn net lhanchao article details 51867327 转载于 https www cnblogs com hhxxgdd p 11140712 html
  • 【Milvus的以文搜图】

    0 介绍 以文搜图指的是 根据文本描述 从图像数据库中检索与文本内容相似的图像数据并返回 通过在CSDN中搜索以文搜图 找到了如下两篇文章 从零到一 教你搭建 以文搜图 搜索服务 一 Zilliz Planet的博客 CSDN博客 以文搜图
  • 如何实现Obsidian笔记云同步?

    在上一篇文章使用Obsidian工具编辑 管理永久笔记 写作实践中介绍 个人免费版Obsidian仅支持在本地以Markdown文件的形式管理笔记 因此使用者只能在一台电脑上编辑 使用笔记 如果你只是在个人电脑上编辑 使用Obsidian笔
  • vue递归组件的使用

    管理系统的菜单栏 相信大家都有见过 都免不了有一级二级 等等 层级是不确定的 是后台数据决定的 这时我们就要用到递归组件了 首先我们来谈谈 组件的name属性 1 递归组件的调用 2 keep alive中使用include和exclude
  • linux下查看进程启动、运行的时间等命令

    可通过ps 来查看 通过参数 o 来查看 ps eo pid tty user comm lstart etime grep redis 参数说明 pid 进程ID tty 终端 user 用户 comm 进程名 lstart 开始时间 e
  • SpringBoot启动微服务报错Consider defining a bean of type ‘org.springframework.data.redis.core.RedisTemplate

    最近遇到一个问题 项目之前使用了Redis 可正常启动 然后最近对Redis部分进行了一些微调 再启动服务提示如下错误 Consider defining a bean of type org springframework data re
  • 通过无人机技术,搭建边防无人机基站实现边境巡防系统的构思。

    本篇文章主要讲解 利用无人机技术 信息化技术 图像识别技术实现边境巡防一体化监控系统的构思 日期 2023年7月7日 作者 任聪聪 要知道祖国的疆域是异常庞大的 边境线的长度也是一个庞大的数字 依靠铁丝网又或者岗哨等传统的方式实际上存在很大
  • Go语言写的选择排序

    选择排序是不稳定的排序算法 不稳定发生在最小元素与A i 交换的时刻 比如序列 5 8 5 2 9 一次选择的最小元素是2 然后把2和第一个5进行交换 从而改变了两个元素5的相对次序 package main import fmt 选出最大