java 选择排序
import java.util.Arrays;
/**
* 选择排序 优化冒泡
* 外层 n-1 内层 i+1
* @author
*
*/
public class Test1 {
public static void main(String[] args) {
int [] arr = {21,324,354,6213,1354365,12213,342,12};
int index = 0;
//外层循环控制轮数,此处表示执行 (arr.length-1) 轮
for (int i = 0; i < arr.length-1; i++) {
//单独定义一个变量,用来记录下标的变化
index = i;
//内层循环控制每轮比较的次数
for (int j = i+1; j < arr.length; j++) {
//判断大小,满足条件 进行下标的交换
if(arr[index] > arr[j]) {
index = j;
}
}
//本轮比较完毕,此时下标为index的数组就是自己需要的值,然后交换
if (arr[index] != arr[i]) {
int c = arr[index];
arr[index] = arr[i];
arr[i] = c;
}
}
//利用 Arrays.toString(); 打印排序完毕的数组
System.out.println("升序:"+Arrays.toString(arr));
}
}
选择排序使用一个元素依次与其他元素进行比较,遇到需要交换位置的元素,不立即交换位置(利用变量记录下标)
拿着需要换位置的元素,继续往后比较,等待一轮比较完成,利用下标交换一次位置即可
每一轮可以固定一个元素的位置
结果截图: