选择排序(java)

只谈情不闲聊 提交于 2020-02-06 06:21:27

过程: 每次从未排序区间中找到最小的元素,将其放到已排序区间的末尾。

空间复杂度为O(1),是一种原地排序算法。选择排序的最好情况时间复杂度、最坏情况和平均情况时间复杂度都为O(n2)。 选择排序是一种不稳定的排序算法。

示意图:
在这里插入图片描述

import java.util.Arrays;

public class Main {
	public static void selectSort(int[] arr) {
		//i 代表无序区间的首元素下标
		for(int i = 0;i < arr.length - 1;i++) { //下面有 j=i+1,所以 i 到 n-1 
			//查找最小值
			int minIndex = i;
			for(int j = i + 1;j < arr.length;j++) {
				if(arr[j] < arr[minIndex]) {
					minIndex = j;
				}
			}
			// 交换 arr[i] 与 arr[minIndex]
            int tmp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = tmp;
		}
	}
	public static void main(String[] args) {
		int[] arr = {1,3,2,6,4,0,8,5,9,7};
		selectSort(arr);
		System.out.println(Arrays.toString(arr));
	}
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!