在下偶爾心血來潮,去寫了最基本的排序算法,發(fā)現(xiàn)居然寫不出來,因此深受打擊,特寫此文章給那些和在下一樣的剛?cè)腴T的小白們!廢話不多說直接貼代碼!
//冒泡排序
void bubblingSort(){
int[] arr={5,9,0,1,4};
System.out.println("排序之前");
for(int n:arr){
System.out.print(n);
}
System.out.println();
for(int i=0;i<arr.length-1;i++){ //外循環(huán)控制比較的輪數(shù)
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]<arr[j+1]){
int max=arr[j+1];
arr[j+1]=arr[j];
arr[j]=max;
}
}
}
System.out.println("排序之后");
for(int n:arr){
System.out.print(n);
}
}
上面的代碼是排序中最簡單的冒泡排序,它的原理是在每輪的比較中比較兩個相近的值,然后互換,這樣的理解起來雖然容易,但是效率并不高,下面是另一種排序方式,叫做選擇排序,代碼如下:
//選擇排序
void choseSort(){
int[] arr={5,9,0,1,4};
System.out.println("排序之前");
for(int n:arr){
System.out.print(n);
}
System.out.println();
for(int i=0;i<arr.length-1;i++){//控制輪數(shù)
int max=i;//每次將第一個下標(biāo)先賦值給max
for(int j=i+1;j<arr.length;j++){
if(arr[j]>arr[max]){
max=j;
}
}
if(max!=i){//如果最大值不是剛開始的i
int temp=arr[max];
arr[max]=arr[i];
arr[i]=temp;
}
}
System.out.println("排序之后");
for(int n:arr){
System.out.print(n);
}
}
選擇排序的原理在下看來其實更為合理,每一輪將第(i)個值設(shè)為最大的值的下標(biāo),然后與后面的值進行比較,如果后面的值大于max,那么就將它的下標(biāo)賦值給max,這樣一次外循環(huán)就得出了最大值的下標(biāo)max,然后進行比較是不是原來設(shè)置的i,如果不是的話進行交換;顯然這樣的執(zhí)行效率更高!
這就是在下會的兩種排序方式,希望對剛?cè)腴T的戰(zhàn)友有一些用!