1.基本介绍
选择排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的
2.选择排序思想
3.选择排序思路分析图
4. 代码演示
package com.itguigu.sort;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SelectSort {
public static void main(String[] args) {
// int arr[] = {101, 34, 119, 1};
int[] arr = new int[80000];
for (int i = 0; i < 80000; i++) {
arr[i] = (int) (Math.random() * 80000);
}
Date date1 = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1Str = sdf.format(date1);
System.out.println("排序前时间= "+date1Str);
selectSort(arr);
Date date2 = new Date();
String date2Str = sdf.format(date2);
System.out.println("排序后时间= "+date2Str);
}
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
// 假定最小值的索引
int minIndex = i;
// 假定最小值
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
/*System.out.println("第" + (i + 1) + "轮排序");
System.out.println(Arrays.toString(arr));*/
}
/*// 第1轮
// 假定最小值的索引
int minIndex = 0;
// 假定最小值
int min = arr[0];
for (int j = 0 + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
arr[minIndex] = arr[0];
arr[0] = min;
System.out.println("第1轮排序");
System.out.println(Arrays.toString(arr));// [1, 34, 119, 101]
// 第2轮
// 假定最小值的索引
minIndex = 1;
// 假定最小值
min = arr[1];
for (int j = 1 + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
arr[minIndex] = arr[1];
arr[1] = min;
System.out.println("第2轮排序");
System.out.println(Arrays.toString(arr));// [1, 34, 119, 101]
// 第3轮
// 假定最小值的索引
minIndex = 2;
// 假定最小值
min = arr[2];
for (int j = 2 + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
arr[minIndex] = arr[2];
arr[2] = min;
System.out.println("第3轮排序");
System.out.println(Arrays.toString(arr));// [1, 34, 101, 119]*/
}
}