【排序算法】选择排序

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

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

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

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

时间复杂度: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;
		}
	}
	
}
相关推荐
啊阿狸不会拉杆37 分钟前
《Java 程序设计》核心知识点梳理与深入探究
java·开发语言·python·算法·php·intellij-idea
行然梦实43 分钟前
世代距离(GD)和反转世代距离(IGD)详析
人工智能·算法·机器学习·数学建模
草莓熊Lotso1 小时前
【LeetCode刷题指南】--单值二叉树,相同的树
c语言·数据结构·算法·leetcode·刷题
Swaggy T1 小时前
自动驾驶控制算法——PID算法
人工智能·算法·机器学习·自动驾驶
2501_924879262 小时前
强反光干扰下漏检率↓79%!陌讯多模态融合算法在油罐车识别的边缘计算优化
人工智能·算法·计算机视觉·视觉检测·边缘计算
Asu52022 小时前
链表反转中最常用的方法————三指针法
java·数据结构·学习·链表
菜鸟555552 小时前
图论:SPFA算法
算法·图论
闪电麦坤952 小时前
数据结构:在链表中查找(Searching in a Linked List)
数据结构·链表
XRZaaa2 小时前
C 多线程实现大文件固定大小分卷与 SHA256 哈希校验
算法·哈希算法