选择排序(学习笔记)

news2024/11/20 21:32:48

选择排序

选择排序的基本思想是冒泡排序,记录当前位置i和最小值k的位置,使用一个变量j往后寻找。
每一轮找到最小值后与第一个元素进行交换,以此类推。
在这里插入图片描述
不使用辅助变量交换两个元素的值方法

package com.company.sort;

import java.util.Random;

//选择排序的基本思想是冒泡排序,记录当前位置i和最小值k的位置,使用一个变量j往后寻找。
//  每一轮找到最小值后与第一个元素进行交换,以此类推。
public class SelectSort {
    public static final int ARRLENGTH = 10;
    public static void main(String[] args) {
        //创建数组
        int[] unSortArray = createArray(ARRLENGTH);
        //打印初始化未排序数组
        printArray(unSortArray);
        //选择排序
        selectSort(unSortArray);
        //打印选择排序后的数组
        printArray(unSortArray);
    }
    //创建数组方法(数组中的元素随机生成)
    public static int[] createArray(int length){
        int[] arr =new int[length];
        Random random = new Random();
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(20);//[0,20)
        }
        return arr;
    }
    //打印数组方法
    public static void printArray(int[] arr){
        for (int i=0;i<arr.length;i++) {
            if (i==0){
                if (arr.length==1){
                    System.out.println("["+arr[0]+"]");
                }else{
                    System.out.print("["+arr[i]+",");
                }
            }else if(i==arr.length-1){
                System.out.println(arr[i]+"]");
            }else {
                System.out.print(arr[i]+",");
            }

        }
        System.out.println("--------------------------------------------------------");
    }
    //选择排序法
    public static void selectSort(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            int k=i;
            for (int j = i+1; j <arr.length ; j++) {
                if (arr[k]>arr[j]){
                    k = j;
                }
            }
            //这里不知为何不使用辅助变量的两种交换元素方法不适用
            /*arr[i] = arr[i]+arr[k];
            arr[k] = arr[i]-arr[k];
            arr[i] = arr[i]-arr[k];
            -------------------------------
            a= a^b;
            b =a^b
            a =a^b;
            */
            
            int temp = arr[i];
            arr[i] = arr[k];
            arr[k] = temp;
        }
    }
 /*   public static void selectSort(int[] arr,int length){
        for (int i = 0; i < length; i++) {
            int k = i;
            for (int j = i+1; j <length ; j++) {
                if (arr[j]<arr[k]){
                    k = j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[k];
            arr[k] = temp;
        }
    }*/
}

核心代码示意图:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【AI视野·今日NLP 自然语言处理论文速览 第五十一期】Tue, 10 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 10 Oct 2023 (showing first 100 of 172 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Few-Shot Spoken Language Understanding via Joint Speech-Text Model…

使用PyTorch加载数据集:简单指南

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

网络链接失败怀疑是服务器处于非正常状态?如何用本地电脑查看服务器是否正常?

网络链接失败怀疑是服务器处于非正常状态&#xff1f;如何用本地电脑查看服务器是否正常&#xff1f; 网页会出现链接失败&#xff0c;可以实时用cdm大法&#xff0c;cdm可以更好的排查字节数据的返回&#xff0c;可以让我们更好的要检查服务器是否处于正常状态&#xff0c;接下…

纯文本邮件发送:java

1.打开jdk的conf下的security文件的.security,找到并删除&#xff0c;权限问题建议复制文件修改后替换 jdk.tls.disabledAlgorithmsSSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL 删除后的内容 然…

Linux服务器实验总结以及回顾(全)

Linux 一、搭建简单的论坛1、准备工作2、实现步骤2.1 挂载光盘2.2 搭建yum安装环境2.2.1 网络源&#xff1a;2.2.2 本地源 2.3 安装http服务2.4 启动http服务并配置开机自启动2.5 安装软件包:mariadb-server,php,php-mysql[php*]2.6 下载并解压论坛源码包Discuz2.7 设置selinux…

Infuse Mac视频播放器 中文

Infus是一款非常好用的播放器软件&#xff0c;它具有广泛的格式支持和强大的解码能力&#xff0c;可以播放各种视频和音频文件。同时&#xff0c;它还支持杜比视界和杜比音效&#xff0c;可以提供高品质的视听体验。此外&#xff0c;Infus还具有直观易用的用户界面和频繁的软件…

Stable Diffusion绘图,lora选择

best quality, ultra high res, (photorealistic:1.4), 1girl, off-shoulder white shirt, black tight skirt, black choker, (faded ash gray hair:1), looking at viewer, closeup <lora:koreandolllikeness_v20:0.66> 最佳品质&#xff0c;超高分辨率&#xff0c;&am…

Java调用FFmpeg

Java调用FFmpeg 1、FFmepg基础知识1.1 下载 FFmpeg1.2 FFmpeg 工具使用 2、Java使用2.1 FFmpeg源码编译2.2 Java集成FFmpeg2.2.1 JNI2.2.2 Java调用执行 FFmpeg 工具 命令 1、FFmepg基础知识 About FFmpeg ffmpeg(计算机程序) - 百度百科 FFmpeg/FFmpeg - GitHub CSDN&#xf…

接口测试如何测?最全的接口测试总结,资深测试老鸟整理...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、接口测试的流程…

软件工程与计算总结(十三)详细设计中的模块化与信息隐藏

一.模块化与信息隐藏思想 1.设计质量 好的设计要着重满足以下3方面&#xff1a;可管理性、灵活性、可理解性好的设计需要侧重于间接性和可观察性——简洁性使得系统模块易于管理&#xff08;理解和分解&#xff09;、开发&#xff08;修改与调试&#xff09;和复用。实践者都…

基于适应度相关优化的BP神经网络(分类应用) - 附代码

基于适应度相关优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于适应度相关优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.适应度相关优化BP神经网络3.1 BP神经网络参数设置3.2 适应度相关算法应用 4…

【软考】9.2 串/数组/矩阵/广义表/树

《字符串》 一种特殊的线性表&#xff0c;数据元素都为字符模式匹配&#xff1a;寻找子串第一次在主串出现的位置 模式匹配算法 1. 暴力破解法&#xff08;布鲁特-福斯算法&#xff09; 主串与子串一个个匹配效率低 2. KMP算法 主串后缀和子串前缀能否找到一样的元素&#xf…

轻量化Backbone | ShuffleNet+ViT结合让ViT也能有ShuffleNet轻量化的优秀能力

视觉Transformer&#xff08;ViTs&#xff09;在各种计算机视觉任务中表现出卓越的性能。然而&#xff0c;高计算复杂性阻碍了ViTs在内存和计算资源有限的设备上的适用性。尽管某些研究已经深入探讨了卷积层与自注意力机制的融合&#xff0c;以增强ViTs的效率&#xff0c;但在纯…

KOSMOS系列

Overview 总览摘要1 引言2 KOSMOS-2.52.1 Model Architecture2.1 Image and Text Representations2.3 Pre-training Data2.4 Data Processing2.5 Filtering and Quality Control 3 Experiments3.1 Evaluation3.2 Implementation Details3.3 Results3.4 Discussion 4 Related Wo…

车载多源融合定位

终端硬件由两部分组成&#xff0c;组合导航处理板和地磁导航处理板。 组合导航处理板负责采集加速度计、陀螺、GNSS和轮速计等数据进行组合导航解算&#xff0c;差分数据通过6Q主板获取到后通过串口发送至组合导航处理板。地磁导航处理板负责地磁数据采集&#xff0c;保存至数…

嵌入式实时操作系统的设计与开发 (启动过程学习)

b Reset; b Undef; b SWI; b PreAbort; b DataAbort; b . ;保留 b IRQ; b FIQ;建立异常向量表的过程&#xff0c;其中第一个指令通常都是存放在主存的零地址的。 异常向量表存放的全是汇编跳转指令&#xff0c;这些指令从主存的零地址&#xff08;0x0&#xff09;开始连续存储在…

Ubuntu下vscode dotNet downloading的问题(Cmake代码高亮)

问题描述&#xff1a;使用Cmake Language Support插件需要安装dotnet的支持库&#xff0c;我原本已经使用apt的方式安装了&#xff0c;但是进入vscode依旧要我下载。尝试按网上的方法修改为我指定的路径&#xff1a; "dotnetAcquisitionExtension.existingDotnetPath&quo…

Vsftp安装配置(超详细版)

目录 1 FTP、Vsftp介绍 1.1 FTP介绍 1.2 Vsftp介绍 1.3 Vsftp的登录类型 2 Vsftp安装配置 2.1 更换源 2.2 安装epel源 2.3 安装Vsftpd及相关依赖 2.4 vsftpd配置文件说明 2.5 vsftpd 配置详解 2.6 备份配置文件 3 vsftpd 配置匿名用户 3.1 编辑配置文件 3.2 常用的匿名FTP配置…

传输层 | UDP协议、TCP协议

之前讲过的http与https都是应用层协议&#xff0c;当应用层协议将报文构建好之后就要将报文往下层传输层进行传递&#xff0c;而传输层就是负责将数据能够从发送端传到接收端。 再谈端口号 端口号(port)标识了一个主机上进行通信的不同的应用程序&#xff0c;在TCP/IP协议中&…

让你的服务器变成游戏世界:打造游戏化在线社区的“秘诀”

引言 假如我有一台服务器&#xff0c;我希望打造一款游戏化的在线社区。那么&#xff0c;如何打造这样一个社区程序并成功运营呢&#xff1f;让我们一起来畅想吧&#xff01; 一、确定社区的主题和目标群体 打造一款游戏化的在线社区&#xff0c;首先&#xff0c;我们需要明确…