package com.sort.day03.cn;
import java.util.Arrays;
public class SelectSort {
/**
* 自定义成员方法实现选择排序
* 选择排序一共有待排元素个数n-1轮
*
*
* @param arr
*/
public static void selectSort(int[]arr) {
//0.选择排序,选择排序的算法复杂度是:o(n^2)
for(int i=0;i<arr.length-1;i++) {
int minIndex=i;
int min=arr[i];
for (int j = i+1; j < arr.length; j++) {
if(arr[j]<min) { //说明假定的数不是最小值
minIndex=j; //进行交换,重置minIndex
min=arr[j]; //重置min
}
}
//进行将最小值交换,把最小值放在arr[0],即交换
if(minIndex!=i) {
arr[minIndex]=arr[i];
arr[i]=min;
}
}
System.out.print("排序后结果是:");
System.out.println(Arrays.toString(arr));
/*
//1.第一轮排序
//2.原始的数据6,3,5,7,8,9,10,1
int minIndex=0;
int min=arr[0];
for (int i = 0+1; i < arr.length; i++) {
if(arr[i]<min) { //说明假定的数不是最小值
minIndex=i; //进行交换,重置minIndex
min=arr[i]; //重置min
}
}
//进行将最小值交换,把最小值放在arr[0],即交换
if(minIndex!=0) {
arr[minIndex]=arr[0];
arr[0]=min;
}
System.out.print("第一轮排序后的结果是:");
System.out.println(Arrays.toString(arr));
//1.第二轮排序
//2.原始的数据1,3,5,7,8,9,10,6
minIndex=1;
min=arr[1];
for (int i = 1+1; i < arr.length; i++) {
if(arr[i]<min) { //说明假定的数不是最小值
minIndex=i; //进行交换,重置minIndex
min=arr[i]; //重置min
}
}
//进行将最小值交换,把最小值放在arr[0],即交换
if(minIndex!=1) {
arr[minIndex]=arr[1];
arr[1]=min;
}
System.out.print("第一轮排序后的结果是:");
System.out.println(Arrays.toString(arr));
*
*/
}
public static void main(String[] args) {
int[]arr=new int[]{6,3,5,7,8,9,10,1};
System.out.print("排序之前的元素是:");
System.out.println(Arrays.toString(arr));
selectSort(arr);
}
}
选择排序算法思路及简单推导
最新推荐文章于 2022-08-19 09:50:23 发布