选择排序的简单介绍

news2024/10/7 20:30:42

选择排序是一种简单直观的排序算法,其原理如下:

1. 遍历数组,找到最小(或最大)的元素,并将其与数组的第一个元素交换位置。
2. 接着在剩下的元素中找到最小(或最大)的元素,并将其与数组的第二个元素交换位置。
3. 以此类推,每次在剩下的未排序元素中找到最小(或最大)的元素,放到已排序部分的末尾。
4. 最终整个数组就会被排序完成。

        定义一个数组 int a[] = {4,6,8,5,9},要求利用选择排序的方法将数组从小到大排序。

        排序的次数:因为每排好一个元素,那么所需要排的元素个数减一,直到排到倒数第二个元素停止,将倒数第二个元素也排好后,整体数组排序就完成了。所以排序的次数 = 元素个数 - 1。(冒泡排序的排序次数与该排序的排序次数计算方法相同)

        所以以min来记录较小元素的小标,i和j结合来遍历数组,初始的时候min和i都指向数组的首元素,j指向下一个元素,j开始从右向左进行遍历数组元素,若有元素比min元素更小则进行交换,然后min为更小元素的小标,i再向右走,这样循环到i走到最后一个元素就完成了排序,过程如下图所示:

代码如下:

#include <stdio.h>
int main() {
	int i, j, min, t,n;
    int a[] = {4, 6, 8, 5, 9};
    n = sizeof(a) / sizeof(a[0]);
    
    for (i = 0; i < n-1; i++) {
        min = i;
        for (j = i+1; j < n; j++) {
            if (a[j] < a[min]) 
                min = j;
        }
        t = a[i];
        a[i] = a[min];
        a[min] = t;
    }
    printf("结果为:");
    for (int i = 0; i < n; i++) 
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

结果为:

结果为:4 5 6 8 9
请按任意键继续. . .

        选择排序的时间复杂度为O(n^2),并且是不稳定的排序算法。虽然选择排序的时间复杂度较高,但是它的实现简单,适用于小规模数据的排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1466245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql深入学习 基础篇 Ss.01 相关概念及初识SQL语法

事情永远不会变得容易&#xff0c;但我会变得更好 ——24.2.20 一、数据库相关概念 1.数据库 存储数据的仓库&#xff0c;数据是有组织的进行存储 DB 2.数据库管理系统 操纵和管理数据库的大型软件 DBMS 3.SQL 操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据…

三、MQTT的基本原理

1、概述 在MQTT协议通讯中&#xff0c;有两个最为重要的角色。它们分别是服务端和客户端&#xff0c;客户端之间通过发布和订阅通信。 1.1、形象的理解MQTT MQTT通信模型示意图如下&#xff1a; 使用电视台、记者、观众三个角色来类比更容易理解&#xff1a; 电视台&#xf…

图文说明Linux云服务器如何更改实例镜像

一、应用场景举例 在学习Linux的vim时&#xff0c;我们难免要对vim进行一些配置&#xff0c;这里我们提供一个vim插件的安装包&#xff1a; curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o./install.sh && bash ./install.sh 但是此安装包…

Jmeter基础(1) Mac下载安装启动

目录 Jmeter下载安装启动下载启动 Jmeter下载安装启动 注意⚠️&#xff1a;使用jmeter需要有java环境 下载 官网下载地址&#xff1a;https://jmeter.apache.org/ 会看到这里有两个版本&#xff0c;那么有什么区别么&#xff1f; Binaries是可执行版&#xff0c;直接下载解…

Gemma模型论文详解(附源码)

原文链接&#xff1a;Gemma模型论文详解&#xff08;附源码&#xff09; 1. 背景介绍 Gemma模型是在2023.2.21号Google新发布的大语言模型, Gemma复用了Gemini相同的技术(Gemini也是Google发布的多模态模型)&#xff0c;Gemma这次发布了了2B和7B两个版本的参数&#xff0c;不…

文件上传漏洞--Upload-labs--Pass10--双写绕过

一、什么是双写绕过 顾名思义&#xff0c;双写绕过就是双写文件后缀名来进行绕过&#xff0c;如&#xff1a;test.php 双写后为 test.pphphp。通常情况下双写绕过用于绕过源代码中的 str_ireplace()函数。 二、双写绕过原理 1、首先进行代码审计&#xff0c;源代码中有黑名单…

linux---防火墙拓展

目录 一、iptables 1.基本语法 2.四表五链——重点记忆 2.1四表 2.2五链 2.3总结 3.iptables选项示例 3.1 -Z 清空流量计数 3.2 -P 修改默认规则 3.3 -D 删除规则 3.4 -R 指定编号替换规则 4.白名单 5.通用匹配 6.示例 6.1添加回环网卡 6.2可以访问端口 6.3 主…

ERROR: No matching distribution found for json

问题描述 安装 json库 的时候&#xff0c;一直报错&#xff1a; 解决方案&#xff1a; 大多数博文分享是&#xff1a;①网络问题&#xff0c;换国内镜像&#xff1b;②更新pip. 少有人提及在Python 3.10.1中&#xff0c;它叫 simplejson 了 pip install simplejson 参考&am…

力扣日记2.21-【回溯算法篇】46. 全排列

力扣日记&#xff1a;【回溯算法篇】46. 全排列 日期&#xff1a;2023.2.21 参考&#xff1a;代码随想录、力扣 46. 全排列 题目描述 难度&#xff1a;中等 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&…

分布式应用:kylin 部署 zabbix 监控平台

目录 一、实验 1.环境 2. kylin 修改mysql数据库 3. kylin 部署 zabbix 监控平台 4. kylin 修改 zabbix 配置 5. kylin 修改zabbix web 二、问题 1. zabbix_server 查看版本报错 2.zabbix_server 文件如何去掉注释"#"和空行 3. zabbix图表显示异常 4.zabbi…

Docker基础篇(三) 容器数据卷(二) dockerfile

新建dockerfile文件 zenDockerfile from centos volume [“/containVolum-01”, “/containVolum-02”] CMD echo “zen”

YOLO v9 出世!

当今的深度学习方法专注于如何设计最合适的目标函数&#xff0c;以使模型的预测结果能够尽可能地接近真实值。同时&#xff0c;还需要设计一种适当的架构&#xff0c;以便为预测获取足够的信息。现有方法忽略了一个事实&#xff0c;即当输入数据经过逐层特征提取和空间转换时&a…

Java基于SpringBoot+Vue的体育用品库存管理系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

什么品牌的洗地机好用?入门级智能洗地机

对于隔三差五就需要做全屋清洁的家庭&#xff0c;使用传统拖布洗地真的很吃不消&#xff0c;随着科技的不断进步&#xff0c;洗地机成为现代家庭清洁的必备工具之一。洗地机&#xff0c;用最贴合实际省事、省钱的方式去完成家务劳动&#xff0c;可以大大减少体力消耗&#xff0…

信号信号槽

三、信号槽 概念 信号和槽是两种函数&#xff0c;这是Qt在C基础上新增的特性&#xff0c;类似于其他技术中的回调的概念。 信号槽通过程序员提前设定的“约定”&#xff0c;可以实现对象之间的通信&#xff0c;有两个先决条件。 通信的对象都是在QOBject类中派生出来的。 QOBje…

Linux环境非root用户配置SSH免密登录,并解决登录仍提示输入密码

Linux环境非root用户配置SSH免密登录&#xff0c;并解决登录仍提示输入密码 ssh免密登录的简单理解 以A和B进行举例&#xff1a;A免密登录B &#xff08;即在A服务器输入命令&#xff1a;ssh 非root用户名B的IP地址&#xff09;可以直接免密码直接登录 A生成私钥和公钥&#…

​​​​​​​Sora:OpenAI的革命性AI视频模型与其对未来影像创作的影响

随着深度学习技术和计算能力的进步&#xff0c;人工智能不仅在图像识别、自然语言处理等领域取得了卓越成就&#xff0c;同时也在不断突破视频处理和生成的边界。在这一背景下&#xff0c;OpenAI推出了Sora——一种新型的AI视频模型&#xff0c;标志着AI在视频内容创作领域的又…

云呐智能维运技术有哪些?智能运维活动有哪些

智能运维&#xff08;AIOps&#xff09;技术是指利用人工智能、机器学习、大数据分析等先进技术手段&#xff0c;来提高IT运维效率和质量的一系列技术和工具。目前常见的智能运维技术核心功能和应用场景。一些具体的智能运维活动案例&#xff0c;包括但不限于故障预测、自动化修…

[hgame 2024 week3] crypto/pwn

第2周作完了不知道扔哪去了&#xff0c;先记录下第3周&#xff0c;因为官方WP已经出来&#xff0c;顺便把没出的题复现一下。最近的比赛都比较不错&#xff0c;相当于近期知识点的总结&#xff0c;有点心经的意思。 Crypto matrix_equation 题目很短&#xff0c;结了一个式子…

数据可视化在商业领域有哪些重要性?

数据可视化在商业领域的重要性体现在多个方面&#xff0c;它通过将复杂的数据集转化为直观、易于理解的图形和图表&#xff0c;帮助企业和组织做出更明智的决策。以下是数据可视化对商业的一些关键重要性&#xff1a; 提高决策效率&#xff1a;通过直观的图表和图形&#xff0c…