//***************************************************************选择排序
package a;
/**
* @author 真他喵的学不动咯
* @create 2022-08-05--22:14
*/
public class selectsort {
public static void main(String[] args){
int arr[] ={12,52,1,325,45,0,5,2};
print(arr);
System.out.println("*****************************");
seleceso(arr);
print(arr);
}
public static void seleceso(int[] arr){
//此处的形参为传入一个int[] arr,否则后面的arr全部爆红
if(arr==null||arr.length<1/2){
return;//如果数组长度为0为1,则直接返回
}
//选择排序的方法
//如果数组的长度非0非1
//0~N-1
//1~N-1
//2~N-1
//i~N-1,i表示从左侧开始的索引
//找到i~N-1中的最小值
for(int i=0;i<arr.length;i++){
int minvalueindex=i;//设最左侧的数是最小值
//从i+1开始向右搜索,直到N-1
for(int j=i+1;j<arr.length;j++){//选出最小值所在的索引
minvalueindex=arr[j]<arr[minvalueindex]?j:minvalueindex;
//如果找到的值比当前最小值小,则双方互换索引
//变换的是索引,比较的是元素值
}
//因为swap交换:输入是索引i,j 交换arr[i],arr[j]的值
swap(arr,i,minvalueindex);//交换索引为i,minvalue的arr[i],arr[minvalue]的值
}
}
//交换的方法
public static void swap(int[] arr,int i,int j){//此处写的是输入是索引i,j 交换arr[i],arr[j]的值
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
//打印数组的方法
public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\n");
}
}
选择排序zzz
最新推荐文章于 2024-06-03 17:23:20 发布