【面试干货】选择排序

【面试干货】选择排序

  • 1、实现思想
  • 2、代码实现


💖The Begin💖点点关注,收藏不迷路💖

1、实现思想

选择排序的实现思想是每次从未排序的部分中选择最小的元素,然后将其放到已排序部分的末尾。

具体步骤如下:

  1. 从未排序序列中找到最小元素的索引。
  2. 将最小元素与未排序序列的起始元素交换位置,即将最小元素放到已排序序列的末尾。
  3. 重复以上步骤,直到所有元素均排序完毕。

选择排序的时间复杂度为O(n^2),其中n为数组的长度。虽然选择排序的时间复杂度较高,但是它是一种简单直观的排序算法,适用于小规模数据或者对稳定性不敏感的场景。

2、代码实现

package csdn;

import java.util.Scanner; 
public class SelectionSort {

    public static void selectSort(int[] numbers) {
        int size = numbers.length, temp; // 声明变量size为数组长度,temp用于交换元素
        for (int i = 0; i < size; i++) { // 外层循环,遍历数组
            int k = i; // 记录最小元素的索引
            for (int j = size - 1; j > i; j--) { // 内层循环,找到未排序部分的最小元素
                if (numbers[j] < numbers[k]) k = j; // 更新最小元素的索引
            }
            temp = numbers[i]; // 交换元素
            numbers[i] = numbers[k];
            numbers[k] = temp;
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象,用于读取输入
        System.out.print("请输入待排序的数组元素个数: ");
        int n = scanner.nextInt(); // 读取数组元素个数
        int[] arr = new int[n]; // 创建数组
        System.out.println("请输入待排序的数组元素:");
        for (int i = 0; i < n; i++) { // 循环读取数组元素
            arr[i] = scanner.nextInt(); // 读取数组元素
        }

        selectSort(arr); // 调用选择排序方法

        System.out.println("排序结果:");
        for (int num : arr) { // 遍历排序后的数组并输出
            System.out.print(num + " ");
        }
    }
}

在这里插入图片描述

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【VTKExamples::Utilities】第九期 FrameRate

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例FrameRate,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. FrameRate 该样例介绍 如…

Linux-----sed案例练习

1.数据准备 准备数据如下&#xff1a; [rootopenEuler ~]# cat openlab.txt My name is jock. I teach linux. I like play computer game. My qq is 24523452 My website is http://www.xianoupeng.com My website is http://www.xianoupeng.com My website is http://www.…

“提升人工智能大模型智能:策略与挑战“

文章目录 每日一句正能量前言算法创新数据质量与多样性模型架构优化后记 每日一句正能量 失败时可以称为人生财富&#xff0c;成功时可以称为财富人生。 前言 随着人工智能技术的飞速发展&#xff0c;大模型已经成为推动多个领域创新的关键力量。从自然语言处理到图像识别&…

嵌入式进阶——OLED显示器(I2C)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 SSD1306I2C版的SSD1306原理图驱动屏幕API的使用软驱动与硬驱动字体制作图形制作 SSD1306 SSD1306是一款OLED显示驱动芯片&#xf…

多个存储权限管理的好处,你get到了吗?

多个存储权限管理是NAS&#xff08;网络附加存储&#xff09;系统中的一个重要功能&#xff0c;它允许管理员对存储在NAS上的文件和文件夹进行细粒度的访问控制。以下是实现多个存储权限管理的关键点&#xff1a; 1.用户和用户组&#xff1a; 创建不同的用户账户和用户组&…

Mybatis——入门

新建 idea 准备 数据库 create table user(id int unsigned primary key auto_increment comment ID,name varchar(100) comment 姓名,age tinyint unsigned comment 年龄,gender tinyint unsigned comment 性别, 1:男, 2:女,phone varchar(11) comment 手机号 ) comment 用…

51-54 Sora能制作动作大片还需要一段时间 | DrivingGaussian:周围动态自动驾驶场景的复合高斯飞溅

24年3月&#xff0c;北大、谷歌和加州大学共同发布了DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes。视图合成和可控模拟可以生成自动驾驶的极端场景Corner Case&#xff0c;这些安全关键情况有助于以更低成本验证和增强自…

如何恢复已删除/丢失或未保存的 PDF 文件?

许多用户曾因某些问题删除或丢失 PDF 文件。此外&#xff0c;一些用户在关闭应用程序时未保存 PDF 文件&#xff0c;从而丢失 PDF 文件。您可以尝试一些解决方案来恢复已删除的 PDF 文件、恢复未保存的 PDF 文件&#xff0c;以及在任何其他数据丢失情况下挽救丢失的 PDF 文件。…

【免费Web系列】大家好 ,今天是Web课程的第九天点赞收藏关注,持续更新作品 !

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 部门管理开发 1. 删除部门 1.1 需求分析 删除部门数据。在点击 "删除" 按钮&#xff0c;会根据ID删除部门数据。 了解了需求之后&#xff0c;我们再看看接口文档中&#xff0c;关于删除部门…

js中的作用域和作用域链,你未必能分清,用代码示例告诉你。

有很多小伙伴分不清二者&#xff0c;看了网上教程也是很迷茫&#xff0c;好吧让我告诉你吧。 一、作用域和作用域链 作用域是指在程序中变量和函数的可访问性和可见性范围。作用域决定了在哪些地方可以访问到变量和函数&#xff0c;以及在哪些地方可以对其进行修改和调用。 …

韩顺平0基础学java——第12天

p250-263 this细节 4的补充&#xff1a;意思是不能在成员方法里通过this调用构造器。 补充 引用类型&#xff08;如数组&#xff09;可以是null&#xff0c;相当于记了个名字&#xff0c;还没有开空间。如果数组是{}&#xff0c;则是开了空间&#xff0c;没有放元素进去。 …

Text Control 控件 中 Service Pack 3:MailMerge 支持 SVG 图像

图像的合并方式与报告模板中的合并字段相同。占位符在设计时添加&#xff0c;并与文件、数据库或内存中的数据合并。可以将图像对象添加到具有指定名称的模板中。数据列必须包含字节数组形式的二进制图像数据、System.Drawing.Image 类型的对象、文件名、十六进制或 Base64 编码…

npm install node-sass 安装失败的解决方案:利用国内镜像加速安装

在开发前端项目时&#xff0c;使用Sass作为CSS预处理器是很多开发者的选择。然而&#xff0c;在通过npm安装其Node.js绑定库node-sass时&#xff0c;一些开发者可能会遇到安装失败的问题&#xff0c;尤其是网络原因导致的下载缓慢或中断。本文将指导你如何通过更换为国内镜像源…

其二:使用递归法实现二分搜索

开篇 本文主要是利用递归法来实现一个简单的二分搜索程序。题目来源是《编程珠玑》第4章课后习题3。 问题概要 编写并验证一个递归的二分搜索程序, 并返回t在数组x[0…n-1]中第一次出现的位置。 思路分析 本题的思路与第一版相似&#xff0c;不过不同的是&#xff0c;为确保返回…

全屏后 element-ui 组件不显示

文章目录 问题分析ElementUI 解决方案ElementPlus 解决方案 注意 问题 上篇我们说到如何 将 DIV 全屏展示 在使用将页面中指定的 DIV 全屏展示后&#xff0c;出现全屏后 element-ui 组件不显示&#xff0c;全屏后展示的提示信息是没有的&#xff0c;如下如所示&#xff1a; 全…

C语言之指针详解(5)(含有易错笔试题)

文章目录 一、sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof 和 strlen 的对比 二、数组和指针笔试题2.1 一维数组2.2 字符数组2.3 二维数组 三、指针运算笔试题3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目7 一、sizeof和strlen的对比 有一个很神…

AS加密技术的实战应用与解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、AS加密技术简介 二、AS加密技术的实现过程 1. 生成公钥和私钥 2. 使用公钥加密数据 …

C++ day1 作业练习

整理思维导图 定义自己的命名空间my_sapce&#xff0c;在my_sapce中定义string类型的变量s1&#xff0c;再定义一个函数完成对字符串的逆置。 #include <iostream> #include <cstring>using namespace std; namespace my_space {string s1; }void show() {cout<…

基于springboot的论坛管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的论坛管理系统3拥有两种角色 管理员&#xff1a;用户管理、公告管理、帖子管理、分类管理、留言管理、系统管理等 用户&#xff1a;登录注册、查看发布帖子等 1.1 背景…

OM电商系统asp.net

OM电商系统&#xff0c;可以让顾客全面了解商品的详细信息&#xff0c;消除网上购物的信息不对称问题。通过商品分类来组织众多的商品&#xff0c;方便顾客找到所需要的商品。提供客服顾客互动机制&#xff0c;提高顾客的参与度。通过设计合理的订单处理流程&#xff0c;提高顾…