public class NumberSort2 {
public static void main(String[] args){
int[] b ={2, 4, 6, 7, 3, 5, 1, 9, 8};
print(b);
selectionSort(b);
//selectionSort2(b);
//bubbleSort(b);
print(b);
}
//冒泡法是一格一格的走,就是说每次只和相邻的格子交换。相当于每次外层循环把最大的数,放到当前循环能接触位置的最下面
private static void bubbleSort (int[] a){
int len = a.length;
int temp;
for(int i=len-1; i>=0; i--){
for(int j=0;j < i;j++){
if (a[j]>a[i]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//最基本的排序算法,每次外层循环有可能有很多次交换
private static void selectionSort(int[] a){
int temp = 0;
for(int i = 0; i <a.length;i++){
for (int j = i+1; j<a.length; j++){
if (a[j] < a[i]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//在以上算法上改进,先比较,找到本次外层循环的最小数字,再进行交换
private static void selectionSort2(int[] a){
int k,temp = 0;
for(int i = 0; i <a.length;i++){
k = i;
for (int j = k+1; j<a.length; j++){
if (a[j] < a[k]){
k = j ;
}
}
if (k != i){
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}
private static void print(int[] a){
for (int i =0; i<a.length; i++){
System.out.print(a[i] + " ");
}
System.out.println();
}
}