【排序算法】选择排序

在无序数据中找到最小(最大)元素,放置到无序数组的起始位置

从剩余未排序的元素中寻找最小(最大)元素,放到无序数组的起始位置。

重复上述过程,直到所有元素有序。

一般默认待排序数组第一个为最小值,找待排序数组当中真正的最小值,找到真正的最小值和待排序数组的一个值进行交换,交换完成之后,真正的最小值到达正确位置。

时间复杂度:O(n^2)

java 复制代码
import java.util.Arrays;

public class SelectSort {
	public static void main(String[] args) {
		int[] arr = {5,7,4,2,0,3,1,6};
		sort(arr);
		System.out.println(Arrays.toString(arr));
	}
	
	public static void sort(int[] arr) {
		for(int i = 0;i<arr.length;i++) {
			// 定义变量存储最小值
			int min = arr[i];
			// 定义变量存储最小值的下标
			int pos = i;
			for(int j = i ;j<arr.length;j++) {
				if(arr[j]<min) {
					min = arr[j];
					pos = j;
				}
			}
//			真正的最小值和默认的最小值交换
			arr[pos] = arr[i];
			arr[i] = min;
		}
	}
	
}
相关推荐
Severus_black几秒前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
武子康38 分钟前
H3-World 为何在加载 LoRA 前,先检查导入的代码?
人工智能·深度学习·算法
秋天的怀念_David2 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
二本咕咕-机械转码2 小时前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表
NEFU_Jyj3 小时前
贝尔数(组合数学)
算法
1-1=04 小时前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
希和20274 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
Pniubi4 小时前
力扣73 矩阵置零
算法·leetcode·矩阵
布莱克60515 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map