package com.jn.learning.algorithm.sort;
import java.util.Random;
/**********************************************************************************************
* *
* Written by TankPush (Jn)
*
* Description:
* 选择排序,是不稳定排序:从开始位置,选定一个元素,依次与后面元素比较,如果后面元素比当前元素小,则记录下索引,一次循环找出最小值,之后交换
* 时间复杂度:O(n²)
* *
***********************************************************************************************/
public class SelectionSort {
public static void main(String[] args) {
//随机生成长度为10的数组,元素大小在20的范围内
int[] arr = new int[10];
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(20);
}
//需经过数组长度轮遍历比较
for (int i = 0; i < arr.length - 1; i++) {
//每轮遍历找出最小值所在的索引位置
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j;
}
}
//交换当前元素与最小值索引位置的值
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
//遍历输出
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}