首页 > 编程语言 >选择排序算法

选择排序算法

时间:2024-08-01 21:25:49浏览次数:15  
标签:minIndex arr int 元素 选择 算法 排序

在Java中实现选择排序算法,首先需要理解其基本思想和步骤。选择排序是一种简单直观的排序算法,其核心思想是每次从未排序的数据元素中找到最小(或最大)的一个元素,并将其放到已排序序列的末尾。

基本步骤

  1. 初始化:设置一个未排序区间的起始位置为0。
  2. 查找最小值:从当前未排序区间中找到最小的元素,并记录其索引。
  3. 交换元素:将找到的最小元素与未排序区间的第一个元素进行交换。
  4. 更新未排序区间:将当前处理的元素移动到已排序区间的末尾。
  5. 递归执行:重复上述步骤,直到所有元素都被排序。

示例代码

以下是一个简单的Java实现选择排序的示例代码:

public class SelectionSort {
public static void selectionSort(int[] arr) {
int n = arr.length ;
for (int i = 0; i < n - 1; i++) {
// 假设第一个元素是最小的
int minIndex = i;
// 找到剩余未排序元素中的最小值所在索引
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 交换找到的最小元素和当前未排序区间的第一个元素
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}

public static void main(String[] args) {
int[] arr = {64, 25, 12, 22, 11};
selectionSort(arr);
System.out.println ("Sorted array: ");
for (int i : arr) {
System.out.print (i + " ");
}
}
}

解析

  1. 外层循环for (int i = 0; i < n - 1; i++),这个循环用于遍历整个数组,每次执行完内层循环后,都会将一个最小元素放到已排序区间的末尾。
  2. 内层循环for (int j = i + 1; j < n; j++),这个循环用于在未排序区间内查找最小元素的索引。
  3. 条件判断if (arr[j] < arr[minIndex]),如果找到更小的元素,则更新minIndex
  4. 交换元素:通过临时变量temp来交换找到的最小元素和当前未排序区间的第一个元素。

性能分析

选择排序的时间复杂度为O(n^2),其中n是数组的长度。虽然它在性能上不及快速排序和归并排序等高级排序算法,但其思想简单,易于理解和实现。

应用场景

选择排序适用于小规模数据的排序,或者当内存有限且不能使用更高效的排序算法时。对于大规模数据,推荐使用其他更高效的排序算法如快速排序或归并排序。

总结来说,选择排序是一种基础且直观的排序算法,在Java中的实现相对简单,适合初学者学习和理解排序的基本概念。

标签:minIndex,arr,int,元素,选择,算法,排序
From: https://blog.csdn.net/qq_64903447/article/details/140826622

相关文章

  • 选择排序
    思想:选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。for(inti=0;i<length-1;......
  • 排序工具类 - SortUtils
    packagecom.kurumi.util;importorg.springframework.stereotype.Component;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importjava.util.Map;publicclassSortUtils{/***将list安装sortMap中的传参排......
  • 「代码随想录算法训练营」第二十五天 | 贪心算法 part3
    134.加油站题目链接:https://leetcode.cn/problems/gas-station/题目难度:中等文章讲解:https://programmercarl.com/0134.加油站.html视频讲解:https://www.bilibili.com/video/BV1jA411r7WX题目状态:没有思路,学习题解思路一:全局最优解首先将所有路径的加油量和耗油量加一起......
  • 选择语句加循环语句题目练习
    选择语句+循环语句作业一、填空题Java中有两种类型的选择结构的控制语句,分别是if语句和switch。在JavaJDK1.7之前,switch只能支持byte、short、char、int或者其对应的封装类以及Enum类型。在JDK1.7中又加入了String类型。for循环的语法格式是for(表达......
  • 分词算法:自然语言处理中的关键技术
    分词算法:自然语言处理中的关键技术大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!分词(Tokenization)是自然语言处理(NLP)中的一项基础技术,旨在将文本拆分成有意义的单位,如单词或词组。分词在文本分析、信息检索、机器翻译等应用中发挥着重要作用。本文将介......
  • 文件系统类型详解及选择指南
    文件系统类型详解及选择指南大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!文件系统是操作系统管理存储设备的一种方式,负责文件的存储、读取和管理。不同的文件系统有不同的特性和适用场景。了解这些文件系统类型有助于我们根据需求选择最合适的文件系统......
  • 冒泡排序
    冒泡排序(BubbleSort)冒泡排序是一种简单的交换排序算法。原理冒泡排序的每一趟都需要从第一位开始进行相邻的两个数的比较,将较大的数放在后面,比较完毕之后向后挪一位继续比较下面两个相邻的数的大小关系,重复此步骤,直到最后一个还没归位的数。示例:对数组[3,13,8,11,6,......
  • 冒泡排序
    特点:每一轮排序是将相邻的两个元素比较大小,最终是一个从小到大或者从大到小的有序序列。规律:1、轮次的规律:总共有n个元素,则需要比较n-1次2、每一轮的比较规律:每一轮的比较规律比上一轮-1次代码实现思想:至少需要两个变量参与编码,一个变量控制轮次,一个变量控制每一轮次中比较的次......
  • JVM—垃圾收集算法和HotSpot算法实现细节
    1、分代回收策略分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。分代垃圾回收采用分治的思想,进行代的划分,把不同生命周期放在不同代上,不同代采用最适合它的垃圾回收方法进行回收。......
  • 冒泡排序的具体思想和算法实现以及改进
    冒泡排序——稳定算法从小到大排序:0~length-1对比a[0]和a[1],如果前一个大于后一个,交换位置。对比a[1]和a[2],如果前一个大于后一个,交换位置。对比a[2]和a[3],如果前一个大于后一个,交换位置。...对比a[length-2]和a[length-1],如果前一个大于后一个,交换位置。第一轮结果下......