选择排序的算法
- 整个数列分成两部分:前面是有序数列,后面是无序数列
- 初始状态下,整个数列都是无序的,有序数列是空
- 一共n个数,需要n-1趟循环(一趟都不能少)
- 每比较完一趟,有序数列数量+1,无序数列数量-1
- 每趟先假设无序数列的第1个元素(整个数列的第i个元素)是最小的,让当前的最小数,从第i+1个元素开始比较,一直比较到最后一个元素。如果发现更小的数,就假设当前数是最小数。
- 一趟比较完后,将发现最小数和无序数列的第一个数交换(如果最小数不是无序数列的第一个数)
【示例一】选择排序
public class TestSelectSort {
public static void main(String[] args) {
//给定无序的数组
int [] scoreArr = {75,87,56,45,89,100,76,34,89,97};
//输出无序的数组
System.out.println(Arrays.toString(scoreArr));
//选择排序
selectSort(scoreArr);
//输出有序的数组
System.out.println(Arrays.toString(scoreArr));
}
public static void selectSort(int[] scoreArr) {
//大循环:n个元素排序,则需要n-1趟循环
for(int i=0;i<scoreArr.length-1;i++){
//第i趟先假设第i个最小
int minIndex = i;
//从第i+1个元素开始,依次使用最小元素和每元素比较,一直比较到最后
for (int j = i+1; j <scoreArr.length ; j++) {
if(scoreArr[minIndex] > scoreArr[j]){
minIndex = j;
}
}
//一趟比较完后,或者最小值的索引,如果不是第i个,就交换
if(minIndex !=i){
int temp;
temp = scoreArr[i];
scoreArr[i] = scoreArr[minIndex];
scoreArr[minIndex] = temp;
}
}
}
}
这篇文章到这里就结束了,感谢大佬们驻足观看,大佬们点个关注、点个赞呗~
谢谢大佬~
作者:香芋味的猫丶
>>相关阅读
《Java冒泡排序算法》