首页 > 编程语言 >选择排序(java)

选择排序(java)

时间:2024-03-28 22:32:48浏览次数:28  
标签:minIndex arr java int 元素 交换 选择 排序

选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列

解题思路:选择排序的基本思路是遍历整个数组,每次找到剩余部分中的最小值,然后将其与当前位置进行交换。这样每一次遍历都能确定一个元素的最终位置,直到整个数组有序为止。在代码中,我们通过两层循环实现了这一思路,并在每次交换后输出了中间结果。

代码实现如下:、

import java.util.Scanner;

public class SelectionSort {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 读取输入的整数个数
        int N = scanner.nextInt();
        
        // 读取待排序的整数数组
        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = scanner.nextInt();
        }
        
        selectionSort(arr);
    }
    
    public static void selectionSort(int[] arr) {
        int len = arr.length;
        
        // 进行选择排序
        for (int i = 0; i < len - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < len; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            // 将最小元素与当前位置交换
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
            
            // 输出中间结果数列
            for (int num : arr) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}
  1. 首先,外层循环从序列的第一个元素开始,依次向后扫描。
  2. 在内层循环中,找到当前位置之后的所有元素中最小的元素,并记录其索引。
  3. 将找到的最小元素与当前位置的元素交换位置。
  4. 输出交换后的序列,即为一次选择排序的中间结果。
  5. 外层循环每执行一次,就完成一次选择排序的过程,直至整个数组有序。

标签:minIndex,arr,java,int,元素,交换,选择,排序
From: https://blog.csdn.net/2303_81535096/article/details/137125724

相关文章

  • Java 多态、包、final、权限修饰符、静态代码块
    多态Java多态是指一个对象可以具有多种形态。它是面向对象编程的一个重要特性,允许子类对象可以被当作父类对象使用。多态的实现主要依赖于继承、接口和方法重写。在Java中,多态的实现主要通过以下两种方式:继承:子类继承父类的属性和方法,可以对方法进行重写(覆盖),从而实现不同的......
  • Java项目:77 springboot母婴商城
    作者主页:源码空间codegym简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍本课题后端使用SpringBoot+SpringCloud框架,前端采用html,JQuery,JS,DIV+CSS技术进行编程,设计在线商城。系统具有前台和后台两大服务。前台主要有用户登录注册、浏......
  • Java项目:73 ssm档案管理系统
    作者主页:源码空间codegym简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍角色:管理员、用户用户点击进入到系统操作界面,可以对个人中心、警察信息管理、事故信息管理、申诉信息管理等功能模块管理员登录成功后进入到系统操作界面,可以对个......
  • Java项目:75 springboot房产销售系统
    作者主页:舒克日记简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍使用房产销售系统分为管理员和用户、销售经理三个角色的权限子模块。管理员所能使用的功能主要有:首页、个人中心、用户管理、销售经理管理、房源信息管理、房源类型管理、......
  • Java项目:78 springboot学生宿舍管理系统的设计与开发
    作者主页:舒克日记简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍系统的角色:管理员、宿管、学生管理员管理宿管员,管理学生,修改密码,维护个人信息。宿管员管理公寓资产,缴费信息,公共场所清理信息,日常事务信息,审核学生床位安排信息。学生查......
  • Java抽象类详解:定义、特性与实例化限制(day12)
    抽象类总结一下今天老师上课的内容,前面几节课听得是有点懵,在讲到内存问题,也就是代码在栈、堆、以及方法区是怎么执行的,听得不是很懂,今天讲到抽象类以及重写的机制,似乎开始慢慢懂得了java的底层原理。父类:子类:上面的Cat类重写父类的eat()方法。Test:如果我们将父类的......
  • JAVA学习笔记
    第一章Java起步入门 #jdk版本JavaSE(J2SE,Java2PlatformStandardEdition,标准版)JavaSE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持JavaWeb服务开发的类,并为JavaEE和JavaME提供基础。JavaE......
  • 基于Java的学生体质健康管理系统的设计与实现
    摘 要随着时代的进步,信息化也在逐渐深入融进我们生活的方方面面。其中也给健康管理带来了新的发展方向。通过对学生体质健康管理的研究与分析发现当下的管理系统还不够全面,系统的性能达不到使用者的要求。因此,本文结合Java的优势和流行性,使用Java语言和SpringBoot框架进行构......
  • 【华为OD机试真题】A卷-日志首次上报最多积分(JAVA)
    一、题目描述【华为OD机试真题】A卷-日志首次上报最多积分(JAVA)题目描述:日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验;如果一次上报的条数太多,会导致超时失败。为此,项......
  • Java案例:考试奖励(利用if..else if实现)
    目录1:题目2:分析3:代码展示1:题目小明快期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。2:分析1.键盘录入考试成绩2.由于奖励种类比较多.属于多......