选择排序的简单介绍

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

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://xiahunao.cn/news/2814728.html

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

相关文章

图论-算法题

797. 所有可能的路径 题目: 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09; graph[i] 是一个从节点 i 可以访问的所有节点的列表&#xff08;即从节点 i …

Openstack云计算架构及前期服务搭建

openstack介绍 Openstack是一个开源的云计算管理平台项目&#xff0c;由几个主要的组件组合起来完成具体工作&#xff0c;支持几乎所有的云环境&#xff0c;项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台 ----百度百科 Openstack是一个云操作系统&a…

wechat-bot-wechat4u微信机器人

欢迎使用&#x1f44f;&#x1f3fb;wechat-bot-wechat4u &#x1f306; 简介 wechat-bot-wechat4u&#xff0c;基于wechat4u进行开发&#xff0c;接收微信账号消息并提供自动回复、记录存储、消息推送、消息转发等功能&#xff0c;可通过自定义实现各种功能&#xff0c;诸如…

Acwing数学与简单DP(二)

摘花生 原题链接&#xff1a;https://www.acwing.com/problem/content/1017/ 最后一步&#xff0c;有两种可能&#xff1a; 从上面走从下面走 也就是max(dp[i-1][j],dp[i][j-1])&#xff0c;再加上最后一个位置的值。 #include"bits/stdc.h"using namespace std;i…

Rocky Linux 运维工具 ls

一、ls 的简介 ​​ls​ 用于列出当前目录下的文件和目录&#xff0c;以及它们的属性信息。通过 ​ls​命令可以查看文件名、文件大小、创建时间等信息&#xff0c;并方便用户浏览和管理文件。 二、ls 的参数说明 序号参数描述1-a显示所有文件&#xff0c;包括以 ​.​开头的…

golang学习7,glang的web的restful接口结构体传参

接口&#xff1a; //POST请求 返回json 接口传参json r.POST("/postJson", controller.PostUserInfo) 1.定义结构体 //定义结构体 type Search struct {Id intName string }2.结构体传参 //结构体传参 func PostUserInfo(c *gin.Context) {search : &Searc…

pytorch安装GPU版本 (Cuda12.1)教程

使用本教程前&#xff0c;默认您已经安装并配置好了python3以上版本 1. 去官网下载匹配的Cuda Cuda下载地址 当前最高版本的Cuda是12.1 我安装的就是这个版本 小提示&#xff1a;自定义安装可以只选择安装Cuda Runtime。Nvidia全家桶不必全部安装。把全家桶全部安装完直接系统…

VPX基于全国产飞腾FT-2000+/64核+复旦微FPGA的计算刀片

6U VPX计算板 产品简介 产品特点 飞腾计算平台&#xff0c;国产化率100% VPX-MPU6902是一款基于飞腾FT-2000/64核的计算刀片&#xff0c;主频2.2GHz&#xff0c;负责业务数据流的管控和调度。搭配自带独立显示芯片的飞腾X100芯片&#xff0c;可用于于各类终端及服务器类应用场…

【毕业设计推荐】基于MATLAB的水果分级系统设计与实现

一、课题介绍 现在商业行为中&#xff0c;在水果出厂前都需要进行质量检测&#xff0c;需要将不同等级的水果进行分级包装&#xff0c;以保证商业利益最大化。可是传统方法都是依靠人工进行检测&#xff0c;效率低下&#xff0c;主观成分大&#xff0c;并不能很好客观地评价出货…

【笔记】深度学习入门:基于Python的理论与实现(五)

卷积神经网络 卷积神经网络(Convolutional Neural Network&#xff0c;CNN) 整体结构 CNN 中新出现了卷积层(Convolution 层)和池化层(Pooling 层)&#xff0c;之前介绍的神经网络中&#xff0c;相邻层的所有神经元之间都有连接&#xff0c;这称为全 连接(fully-connected) …

Linux Seccomp 简介

文章目录 一、简介二、架构三、Original/Strict Mode四、Seccomp-bpf五、seccomp系统调用六、Linux Capabilities and Seccomp6.1 Linux Capabilities6.2 Linux Seccomp 参考资料 一、简介 Seccomp&#xff08;secure computing&#xff09;是Linux内核中的一项计算机安全功能…

4. client-go 编程式交互

Kubernetes 系统使用 client-go 作为 Go 语言的官方编程式交互客户端库&#xff0c;提供对 Kubernetes API Server 服务的交互访问。Kubernetes 的源码中已经集成了 client-go 的源码&#xff0c;无须单独下载。client-go 源码路径为 vendor/k8s.io/client-go。 开发者经常使用…

四种经典限流算法讲解

1. 固定窗口限流算法 1.1 什么是固定窗口限流算法 固定窗口限流算法&#xff08;Fixed Window Rate Limiting Algorithm&#xff09;是一种最简单的限流算法&#xff0c;其原理是在固定时间窗口(单位时间)内限制请求的数量。该算法将时间分成固定的窗口&#xff0c;并在每个窗…

【Java】双亲委派机制及其打破的相关知识笔记

目录 类的加载机制 类加载器 双亲委派模型机制 为什么要有双亲委派机制 如何打破双亲委派机制 类的加载机制 类加载过程是由Java虚拟机的类加载子系统完成的&#xff0c;它负责将字节码加载到内存中&#xff0c;并进行链接和初始化操作。类加载过程是Java中非常重要的一部…

六、防御保护---防火墙内容安全篇

六、防御保护---防火墙内容安全篇 一、IAE&#xff08;Intelligent Awareness Engine&#xff09;引擎二、深度检测技术(DFI和DPI&#xff09;2.1 DPI -- 深度包检测技术2.1.1 基于“特征字”的检测技术2.1.2 基于应用网关的检测技术2.1.3 基于行为模式的检测技术 2.2 DFI -- 深…

163邮箱SMTP端口号及服务器地址详细设置?

163邮箱SMTP端口号是什么&#xff1f;163邮件SMTP设置教程&#xff1f; 除了基本的邮箱账号和密码外&#xff0c;还需要了解SMTP服务器地址和端口号&#xff0c;以及相应的设置。这些设置对于确保邮件能够顺利发送至关重要。下面&#xff0c;蜂邮EDM将详细介绍163邮箱SMTP端口…

RF自动化环境安装+自动化实例解析

RF定义&#xff1a; 通用型的 自动测试框架&#xff0c; 绝大部分的软件的的自动化系统都可以采用它。 特点&#xff1a; 测试数据文件&#xff08;Test Data&#xff09;对应一个个的测试用例。测试数据文件里面使用的功能小模块叫关键字&#xff0c;由测试库&#xff08;T…

【八股文学习日记】集合概述

【八股文学习日记】集合概述 集合概述 Java 集合&#xff0c; 也叫作容器&#xff0c;主要是由两大接口派生而来&#xff1a;一个是 Collection接口&#xff0c;主要用于存放单一元素&#xff1b;另一个是 Map 接口&#xff0c;主要用于存放键值对。对于Collection 接口&#…

重铸安卓荣光——双向滑块增强

痛点&#xff1a; 公司打算做安卓软件&#xff0c;最近在研究安卓&#xff0c;打算先绘制样式 研究发现安卓并不像前端有那么多组件库&#xff0c;甚至有些基础的组件都需要自己实现&#xff0c;记录一下自己实现的组件 成品展示 上面一条是谷歌提供的双向滑块&#xff0c;下面…

使用空闲电脑免费搭建一个私人的网盘

如果你也有一台空闲电脑&#xff0c;可以使用它来搭建一个私人的网盘。 这里使用的是飞梦云网盘&#xff1b; 服务端&#xff1a;下载 服务器文件使用hash校验进行储存&#xff0c;实现重复上传的文件秒传功能。 Fuse4Ui&#xff08;虚拟分区工具&#xff09;&#xff1a;下…