【排序算法】选择排序

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

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

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

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

时间复杂度: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;
		}
	}
	
}
相关推荐
fengfuyao9852 分钟前
基于STM32的4轴步进电机加减速控制工程源码(梯形加减速算法)
网络·stm32·算法
无敌昊哥战神1 小时前
深入理解 C 语言:巧妙利用“0地址”手写 offsetof 宏与内存对齐机制
c语言·数据结构·算法
小白菜又菜1 小时前
Leetcode 2075. Decode the Slanted Ciphertext
算法·leetcode·职场和发展
Proxy_ZZ02 小时前
用Matlab绘制BER曲线对比SPA与Min-Sum性能
人工智能·算法·机器学习
黎阳之光2 小时前
黎阳之光:以视频孪生领跑全球,赋能数字孪生水利智能监测新征程
大数据·人工智能·算法·安全·数字孪生
小李子呢02112 小时前
前端八股6---v-model双向绑定
前端·javascript·算法
XH华2 小时前
数据结构第九章:树的学习(下)
数据结构·学习
2301_822703203 小时前
Flutter 框架跨平台鸿蒙开发 - 创意声音合成器应用
算法·flutter·华为·harmonyos·鸿蒙
cmpxr_3 小时前
【C】数组名、函数名的特殊
c语言·算法