import java.util.Arrays;
/**
* 选择排序 java版 :使用单个元素与后面的挨个比较 ,符合条件交换位置
* 冒泡排序java版 :使用相邻的两个元素进行排序 符合条件交换位置
* @author zhaokun
*
*/
public class selectSort {
public static void selectSort(int [] arr){
int len = arr.length;
int count1=0,count2=0;
for(int i = 0;i<len-1;i++){//len-1 防止数组越界 i+1后面
for(int j=i+1;j<len;j++){
count1++;
if(arr[i]>arr[j]){
count2++;
int temp = arr[j];
arr[j] = arr[i];
arr[i]=temp;
}
}
}
System.out.println("比较了"+count1+"次");
System.out.println("移动了"+count2+"次");
* 选择排序 java版 :使用单个元素与后面的挨个比较 ,符合条件交换位置
* 冒泡排序java版 :使用相邻的两个元素进行排序 符合条件交换位置
* @author zhaokun
*
*/
public class selectSort {
public static void selectSort(int [] arr){
int len = arr.length;
int count1=0,count2=0;
for(int i = 0;i<len-1;i++){//len-1 防止数组越界 i+1后面
for(int j=i+1;j<len;j++){
count1++;
if(arr[i]>arr[j]){
count2++;
int temp = arr[j];
arr[j] = arr[i];
arr[i]=temp;
}
}
}
System.out.println("比较了"+count1+"次");
System.out.println("移动了"+count2+"次");
}
//移动次数更少
public static void selectSort1(int [] arr){
int len = arr.length;
int count1=0,count2=0;
int min;
for(int i = 0;i<len-1;i++){//len-1 防止数组越界 i+1后面
min=i;
for(int j=i+1;j<len;j++){
count1++;
if(arr[j]<arr[i]){
min=j;
}
}
if(min!=i){
count2++;
int temp = arr[i];
arr[i] = arr[min];
arr[min]=temp;
}
}
System.out.println("___比较了"+count1+"次");
System.out.println("___移动了"+count2+"次");
}
public static void bubbleSort(int [] arr){
int len = arr.length;
for(int i =0;i<len-1;i++){ // len-1防止数组越界 控制比较的轮数
for(int j =0;j<len-1-i;j++){ // len-1-i 第一次少比较0次 第二次少比较1次
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr [j+1];
arr[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
int [] arr = {1,4,56,7,32,2};
selectSort(arr);
//selectSort1(arr);
//bubbleSort(arr);
//Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
/*for(int i =0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}*/
}
}