文章目录
前言
选择排序:
- 每次排序完成之后(0至i)的数据是有序的。
- 每次进行排序都是选取(i至len)中的最小值的索引(即数组下标)。在进行i和最小值进行交互。
选择排序实现逻辑:len(数组长度)
- 从i=0,寻找(i+1)到 小于len 下标索引中最小的元素。
- 交换最小值索引和i的索引值。
- 执行第一步,但是i++。直到i<len
一、选择排序代码实现
代码实现如下:
/**
* 选择排序
* 1. 从i=0,寻找(i+1)到 小于len 下标索引中最小的元素。
* 2. 交换最小值索引和i的索引值。
* 3. 执行第一步,但是i++。直到i<len
*/
public class SelectSort {
public static void main(String[] args){
run(100000);
}
/**
* 测试示例
*/
public static void run(int num){
int[] arr = new int[num];
for(int i = 0; i < arr.length; i++){
arr[i] = (int) (Math.random() * num);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("开始时间:"+sdf.format(new Date()));
sort(arr);
//数据小的时候,可以采用下列方法打印数据
// System.out.println(Arrays.toString(arr));
System.out.println("结束时间:"+sdf.format(new Date()));
}
//升序排序
public static void sort(int[] arr){
//数组长度
int len = arr.length;
for(int i = 0; i < len; i++){
int min = i;
for(int j = i + 1; j < len; j++){
//寻找最小值
if(arr[min] > arr[j]){
min = j;
}
}
int tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
}