学习尚硅谷韩顺平老师的Java数据结构笔记,详情请移步网站
- 基本介绍
选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 - 排序思想
选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值, 与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2] 交换,…,第 i 次从 arr[i-1]~arr[n-1]中选取最小值,与 arr[i-1]交换,…, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值, 与 arr[n-2]交换,总共通过 n-1 次,得到一个按排序码从小到大排列的有序序列。 - 思路分析
package com.Sort;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 选择排序
*/
public class SelectedSort {
public static void main(String[] args) {
//int arr[] = {101,34,119,1};
int arrSize = 80000;//定义数组大小
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//时间格式化
int[] arr = createNumbers(arrSize);
Date start = new Date();//开始时间
System.out.println("开始: " + simpleDateFormat.format(start));
selectSort(arr);
Date end = new Date();//结束时间
System.out.println("结束: " + simpleDateFormat.format(end));
}
private static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {//进行arr.length - 1次选择
int minIndex = i;//暂定首个最小
int min = arr[minIndex];
for (int j = i+1; j < arr.length; j++) {//循环找出最小数
if (arr[minIndex] > arr[j]){//假定的最小值不是最小
min = arr[j];//更新最小值
minIndex = j;//记录最小值下标
}
}
//交换
if (minIndex != i){
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
//生成随机数数组
public static int[] createNumbers(int arrSize) {
int arr[] = new int[arrSize];
for (int i = 0; i < arrSize; i++) {
arr[i] = (int) (Math.random()*8000000);//生成一个0到8000000的数
}
return arr;
}
}