Java 直接选择排序
/*
* 第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,
* 第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,
* ....,
* 第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,
* .....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,
* 总共通过n-1次,得到一个按排序码从小到大排列的有序序列
*/
public class ZhiJieXuanZeSort {
public static void main(String[] args) {
int[] arr = new int[]{3,8,34,89,4,63,69,309,55,32};
// 此方法是交换两个数,最后是最小的数交换
// for(int i = 0; i < arr.length-1; i++){
// for(int j = i; j <arr.length; j++){
// if(arr[i]>arr[j]){
// int temp = arr[i];
// arr[i] = arr[j];
// arr[j] = temp;
// }
// }
// }
//另一种方法:只是交换下标
for(int i = 0; i < arr.length-1; i++){
int t = i; //记录当前的下标
for(int j = i; j <arr.length; j++){
if(arr[t]>arr[j]){
t=j; //改变下标,总是记录最小数的下标
}
}
if(t != i){
//判断i是否变化
int temp = arr[t]; //当前数与最小数交换。
arr[t] = arr[i];
arr[i] = temp;
}
}
//遍历打印
for(int i = 0; i<arr.length;i++){
System.out.println(arr[i]);
}
}
}