概述
排序算法有好多種,也在特殊的場景中,我們經(jīng)常需要對我們的數(shù)據(jù)進行排序,這里對經(jīng)典的排序做一個記錄整理。
一冒泡排序
原理分析
冒泡排序其實就是對一組數(shù)以類似冒泡對形式,進行從大到小或者從小到大的排序,那么什么是冒泡呢?
其實也簡單,比如有一組數(shù)字:3,9,6,2

第一輪比較
以上圖只比較了第一輪,會冒出一個較大大,依此類推進行比較。
以此比較兩個數(shù)字,將較較小的數(shù)字一個一個冒上來,將相反的較大的數(shù)字往下沉,然后內(nèi)層循環(huán)每一輪比較就會冒出來一個最大數(shù)字,這樣有2層循環(huán)即可,外層循環(huán)完后,所有的數(shù)字就冒完了。
代碼實現(xiàn)(java)
public class MPTest {
public static void main(String[] args) {
int [] numbers={3,9,6,2};
int temp=0;
for(int i=0;i<numbers.length-1;i++){
for(int j=0;j<numbers.length-1-i;j++){//內(nèi)層循環(huán)一次冒泡出一個比較小的數(shù)上來
if(numbers[j]>numbers[j+1]){//如果第一個數(shù)字比第二個大則交換位置
temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
for(int i=0;i<numbers.length;i++){
System.out.println("第"+i+"個數(shù)字是:"+numbers[i]);
}
}
}
輸出結(jié)果是:
第0個數(shù)字是:2
第1個數(shù)字是:3
第2個數(shù)字是:6
第3個數(shù)字是:9
二選擇排序
原理分析
選擇排序其實其實思路也是比較簡單的,也是2層循環(huán)。
主要思路是記錄一個最小值,然后內(nèi)層循環(huán)如果有比它小的就跟這個最小值交換位置,這樣就能確定第一位最小值,然后第二次循環(huán)也是如此,以此類推就能按照由小到大排序。
還是對這幾個數(shù)字進行排序:3 9 6 2
第一次循環(huán):2 9 6 3
第二次循環(huán):2 3 6 9
代碼實現(xiàn)(java)
public class XZTest {
public static void main(String[] args) {
int[] numbers = {3, 9, 6, 2};
int temp=0;
for (int i = 0; i < numbers.length; i++) {
int min = i;
for (int j = i + 1; j < numbers.length; j++) {
if(numbers[j]< numbers[min]){
min=j;
}
}
if(i!=min){
temp=numbers[i];
numbers[i]=numbers[min];
numbers[min]=temp;
}
}
for(int i=0;i<numbers.length;i++){
System.out.println("第"+i+"個數(shù)字是:"+numbers[i]);
}
}
}
輸出結(jié)果是一樣對:
第0個數(shù)字是:2
第1個數(shù)字是:3
第2個數(shù)字是:6
第3個數(shù)字是:9