选择排序法:
使用0角标对应的元素和后面角标对应的元素依次比较,第一次比较完毕,最小值出现在最小索引处!
比较的次数:数组长度-1次
public class SelectSortDemo {
public static void main(String[] args) {
//已知数组
int[] arr = {24,69,87,56,13} ;
System.out.println("选择排序前:");
printArray(arr) ;
/*System.out.println("第一次比较后:") ;
//第一次比较
int x = 0 ;
//遍历数组中后面的所有元素
for(int y = x+1;y<arr.length ;y++){
//将arr[y] 后面的元素取出来
//判断
if(arr[y] < arr[x]){ //当后面元素比较前面元素小,后面的元素放前放
//中间变量
int temp = arr[y] ;
arr[y] = arr[x] ;
arr[x] = temp ;
}
}
printArray(arr) ;
System.out.println("--------------------------------------------------------") ;
//第二比较
System.out.println("第二次比较后:") ;
x = 1 ;
for(int y = x + 1; y< arr.length ; y++){
//后面元素比较前面小,往前放
if(arr[y] < arr[x]){
int temp = arr[y] ;
arr[y] = arr[x] ;
arr[x] = temp ;
}
}
printArray(arr) ;
System.out.println("--------------------------------") ;
//第三次比较
System.out.println("第三次比较后: ") ;
x = 2 ;
for(int y = x + 1; y < arr.length ; y ++){
if(arr[y] < arr[x]){
int temp = arr[y] ;
arr[y] = arr[x] ;
arr[x] = temp ;
}
}
printArray(arr) ;
System.out.println("--------------------------------") ;
//第四次比较
System.out.println("第四次比较后: ") ;
x = 3 ;
for(int y = x + 1; y < arr.length ; y ++){
if(arr[y] < arr[x]){
int temp = arr[y] ;
arr[y] = arr[x] ;
arr[x] = temp ;
}
}
printArray(arr) ;*/
System.out.println("--------------------------------------") ;
System.out.println("排序后:");
//优化:上面的代码冗余度非常高,循环了四次---比较次数:数组长度-1次
for(int x = 0 ; x < arr.length-1;x++){
//里面元素比较
for(int y = x +1; y< arr.length ; y ++){
//后面元素比较前面元素小,小的往前放
if(arr[y] < arr[x]){
int temp = arr[y] ;
arr[y] = arr[x] ;
arr[x] = temp ;
}
}
}
printArray(arr) ;
System.out.println("---------------------------------------------------") ;
int[] myArray = selectSort(arr) ;
//System.out.println(myArray) ;//地址值没有意义
//要么第三方提供jdk提供的Arrays工具类:将任何的数组转换成String ["元素1", "元素2", ]---toString()
String str = Arrays.toString(myArray);
System.out.println(str);
}
//定义选择排序的方法
public static int[] selectSort(int[] array){
//优化:上面的代码冗余度非常高,循环了四次---比较次数:数组长度-1次
for(int x = 0 ; x < array.length-1;x++){
//里面元素比较
for(int y = x +1; y< array.length ; y ++){
//后面元素比较前面元素小,小的往前放
if(array[y] < array[x]){
int temp = array[y] ;
array[y] = array[x] ;
array[x] = temp ;
}
}
}
return array ;
}
public static void printArray(int[] array){
System.out.print("[") ;
for(int x = 0 ;x < array.length ; x++){
if(x ==array.length-1){
System.out.println(array[x]+"]");
}else{
System.out.print(array[x]+", ");
}
}
}
}