排序算法--选择排序(Java实现)

article/2025/9/30 5:19:25

选择排序概念

        选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 --form baike

思想
*     每次从待排序的数据元素中选出最小或最大的一个元素,存放在序列的起始或末尾位置
*     长度为n的数组一共需要进行n-1趟排序,每趟排序会进行一次值的交换;
*     当进行下一次排序时,范围缩小1

代码实现

package com.lll.datastructure.sort;import java.util.Arrays;/*** 
* @ClassName: SelectionSort
* @Description: 选择排序
* @Author: liulianglin
* @DateTime 2022年9月7日 上午9:12:13
* 
* 选择排序思想:
* 	每次从待排序的数据元素中选出最小或最大的一个元素,存放在序列的起始或末尾位置
* 	长度为n的数组一共需要进行n-1趟排序,每趟排序会进行一次值的交换;当进行下一次排序时,范围缩小1*/
public class SelectionSort {public static void main(String[] args) {// 待排序数据int[] arr = {1,3,2,4,7,54,11,34,9}; // 记录当前趟数查找到的最大值的数组下标 int max;// 交换变量int temp;System.out.println("排序前:" + Arrays.toString(arr));// 外层控制循环需要排序的趟数for(int i = 0; i < arr.length - 1; i++) {// 每一趟都默认数组第一个元素为最大值max = 0;// 内循环控制遍历数组的个数(每趟减1),并得到最大数的下标for (int j = 0; j < arr.length - i; j++) {if (arr[j] > arr[max]) {max = j;}}// 将交换变量设置为最大值, 将最大值暂存一下temp = arr[max];// 将当前最大值设置为当前未排序序列的最后一个元素值arr[max] = arr[arr.length - 1 - i];// 将刚才缓存的最大值,设置为当前未排序队列的最后一个元素,完成交换arr[arr.length - 1 - i] = temp;}System.out.println("排序后:" + Arrays.toString(arr));}
}

关键步骤:

1. 首先定义两个变量:分别表示最大值标 和 交换变量;

2. 通过外层for循环,控制排序的趟数;

3. 通过内循环控制每趟需要遍历数组的次数,每趟会较上一趟减1,每次会得到最大值的下标。再下一趟外循环会将这个下标重新置为0;

4. 每趟找到最大值后,将交换变量设置为最大值,目的是将最大值进行一个暂存;

5.然后将最大值设置为当前未排序序列的最后一个元素;

6.最后将第4步缓存的最大值,设置为的当前未排序序列的最后一个元素

7.至此完成数据交换,继续进行步骤2,直到数据数据有序。

 执行结果

 


http://chatgpt.dhexx.cn/article/YOdYc1yJ.shtml

相关文章

java之选择排序

基本介绍 选择排序同样属于内部排序法&#xff0c;是从欲排序的数据中&#xff0c;按指定的规则选出某一元素&#xff0c;再按规定交换位置达到排序的目的。 排序思想 选择排序是一种简单的排序方法。它的基本思想是&#xff1a;第一次从arr[0]~arr[n-1]中选取最小值&#xf…

java选择排序(含选择排序代码)

目录 一&#xff1a;选择排序的思想 ​二&#xff1a;选择排序的代码 三&#xff1a;结果 一&#xff1a;选择排序的思想 选择排序是一种简单直观的排序算法。它的工作原理是&#xff1a;第一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&…

选择排序算法

选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法。它的工作原理是&#xff1a;第一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;然后再从剩余的未排序元素中寻找到最小&…

Java——常见的几种排序算法

一、冒泡排序 每次冒泡过程都是从数列的第一个元素开始&#xff0c;然后依次和剩余的元素进行比较, 跟列队一样, 从左到右两两相邻的元素比大小, 高的就和低的换一下位置. 最后最高(值最大)的肯定就排到后面了. 但是这只是把最高的排到后面了, 还得找出第二高的, 于是又从第一…

Java实现选择排序

Java实现选择排序 选择排序原理为&#xff1a;随机确定一个标志位&#xff08;一般为第一个数字&#xff09;作为最小数&#xff0c;然后向后遍历&#xff0c;找到比标志位更小的数便与标志位互换位置并更新最小数&#xff0c;实现步骤为&#xff1a; 将数组的第一个数字设置…

【算法】选择排序法

一、介绍 1.选择排序法是将序列分为两段&#xff0c;有序前列和无序后列&#xff0c;每次查找无序后列中最大元素&#xff0c;将其插入到有序前列的最末尾处&#xff0c;直至无序后列最后一个元素&#xff0c;最终排序后的序列为降序序列 2.适用于包括数组和向量在内的序列 …

选择排序的两种算法(Java代码实现)

目录 选择排序&#xff1a; 基本思想&#xff1a; 1&#xff1a;简单选择排序&#xff1a; 基本思想&#xff1a; 过程&#xff1a; 2&#xff1a;堆排序&#xff1a; 基本思想&#xff1a; 过程&#xff1a; 选择排序&#xff1a; 基本思想&#xff1a; 每一趟从待排序…

Java选择排序

1. 选择排序 选择排序是一种简单直观的排序算法&#xff0c;其基本原理是每一次从待排序的数组里找到最小值&#xff08;最大值&#xff09;的下标&#xff0c;然后将最小值&#xff08;最大值&#xff09;跟待排序数组的第一个进行交换&#xff0c;然后再从剩余的未排序元素中…

数据仓库理论知识

数据仓库 1.1 数仓基础知识 1.1.1. 为什么要有数据仓库 通常数据仓库的数据来自各个业务应用系统。业务系统中的数据形式多种多样&#xff0c;可能是 Oracle、MySQL、SQL Server 等关系数据库里的结构化数据&#xff0c;可能是文本、CSV 等平面文件或 Word、Excel 文档中的数…

数据仓库技术中的MPP

数据仓库世界里面的massively parallel processing 大概定义&#xff1a; MPP 是将任务并行的分散到多个服务器和节点上&#xff0c;在每个节点上计算完成后&#xff0c;将各自部分的结果汇总在一起得到最终的结果。       首先MPP 必须消除手工切分数据的工作量。 这是…

数据挖掘和数据仓库之间的区别

数据挖掘和仓储对于任何希望在全球或国家层面获得认可的组织来说都是必不可少的两个过程。这两种技术都有助于防止数据欺诈并提高管理统计数据和排名。数据挖掘用于依靠在数据仓库阶段收集的数据来检测重要模式。 数据挖掘和数据仓库都被视为数据分析的一部分。但它们以不同的方…

数据仓库ETL技术探究

ETL概述 在构建商业智能系统的时候&#xff0c;如何正确有效地将分散在各个不同数据源中的信息整合到系统中成为了整个系统成败的关键&#xff0c;直接影响到系统的运行效率和最终结果。 ETL正是解决这一问题的有力工具。 ETL是指把数据从数据源装人数据仓库的过程&#xff0c…

数据仓库与数据挖掘知识点梳理

数据仓库与数据挖掘知识点梳理 一&#xff1a;数据挖掘 1&#xff1a;什么是数据挖掘 数据挖掘是从大量的数据中挖掘出隐含的、未知的、用户可能感兴趣的和对决策有潜在价值的知识和规则。 ----简单的说&#xff0c;数据挖掘就是从大量的数据中发现有用信息的过程 数据的丰富…

Greenplum 实时数据仓库实践(1)——数据仓库简介

目录 1.1 什么是数据仓库 1.2 操作型系统与分析型系统 1.2.1 操作型系统 1.2.2 分析型系统 1.2.3 操作型系统和分析型系统对比 1.3 抽取-转换-装载 1.3.1 数据抽取 1.3.2 数据转换 1.3.3 数据装载 1.3.4 开发ETL系统的方法 1.4 数据仓库架构 1.4.1 基本架构 …

数据仓库 OLAP

一、数据库 vs. 数据仓库 1. 构建目的不同&#xff1a;数据库主要用于实现企业的日常业务管理&#xff0c;提高业务运营的效率 数据仓库用于将多个数据源的数据进行集成&#xff0c;用于分析&#xff0c;结果辅助决策 2. 管理数据不同&#xff1a;数据库通常只包含当前数据&…

数据仓库基本知识

目录 1.数据仓库 1.1 数据仓库起源 1.1.1 联机事务处理系统&#xff08;On-Line Transaction Processing&#xff0c;OLTP&#xff09; 1.1.2 联机分析处理系统&#xff08;On-Line Analytical Processing&#xff0c;OLAP&#xff09; 1.1.3 建立DW的基本条件 1.2 数据仓…

数据仓库框架指导

目录 1, 数据仓库 DW 2, 数据库 vs 数据仓库 3&#xff0c;数据仓库历史 3.1&#xff0c;历史 4&#xff0c;维度建模 4.1&#xff0c;概念 4.2&#xff0c;建模模型 4.3&#xff0c;结构 4.4&#xff0c;事实表 4.5&#xff…

Oracle 数据仓库详解

文章目录 1 概述2 数据仓库2.1 数仓分层2.2 维度建模 1 概述 数据库 VS 数据仓库 数据库是面向事务设计的&#xff0c;属于 OLTP&#xff08;在线事务处理&#xff09;系统&#xff0c;主要操作是随机读写&#xff1b;在设计时尽量避免冗余&#xff0c;常采用范式规范来设计数…

数据仓库原理

1.简介 1.1诞生背景 历史数据积存&#xff1a;历史数据使用频率 低&#xff0c;堆积在业务科中&#xff0c;导致性能下降&#xff1b;企业数据分析需要&#xff1a;各个部门自己建立独立的数据抽取系统&#xff0c;导致数据不一致&#xff1b; 1.2基本概述&#xff08;Data …