【排序算法】选择排序

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

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

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

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

时间复杂度: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;
		}
	}
	
}
相关推荐
月疯13 分钟前
二分法算法(水平等分图形面积)
算法
豆瓣鸡24 分钟前
算法日记 - Day3
java·开发语言·算法
白白白小纯37 分钟前
算法篇—反转链表
c语言·数据结构·算法·leetcode
Achou.Wang1 小时前
深入理解go语言-第5章 并发编程——Go的灵魂
大数据·算法·golang
The Chosen One9851 小时前
高进度算法模板速记(待完善)
java·前端·算法
土豆.exe4 小时前
Fastjson2 2.0.53 哈希碰撞 RCE:从原理到三种打法
算法·哈希算法
黄河123长江4 小时前
有限Abel群的结构()
算法
阿米亚波4 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
Jerry4 小时前
LeetCode 92. 反转链表 II
算法
骊城英雄5 小时前
Rust从入门到精通-trait
人工智能·算法·rust