什么是选择排序?
个人理解:乱序的数组中,第一次循环找到最小的和0位置交换,第二次循环找到最小的和1交换,直到数组循环完毕。
为什么使用选择排序?
顾名思义:为了排序
此处直接贴出main方法
如何实现
代码如下:
public static void main(String[] args) {
// 首先定义无序数组
int[] arr = {5,3,2,6,9,77,88,42,12,31};
sort(arr);
}
public static void sort(int[] arr){
// 打印排序前数组
print(arr);
// 定义最大值
int N = arr.length;
for (int i = 0; i < N; i++) {
int minValueIndex = i;
for (int j = i+1; j < N; j++) {
minValueIndex = arr[minValueIndex]<arr[j]?minValueIndex:j;
}
// 如果最小值还是i的话就没必要交换了
if (minValueIndex!=i)
// 交换
swap(arr,i,minValueIndex);
}
print(arr);
}
// 交换数值,将小的值向前放(正序)降序反过来就可以了
public static void swap(int[] arr,int i,int j){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
public static void print(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}