陣列的常見排序演算法--氣泡排序,選擇排序
阿新 • • 發佈:2018-11-11
陣列的排序演算法--氣泡排序,選擇排序
程式設計中,我們會經常用到陣列的排序,方便統計和查詢。當然面試的時候也會經常問到
下面是兩種比較常見的排序。
1.氣泡排序
基本思想
比較相鄰的兩個值,如果滿足條件就交換值,把小的值移到陣列前面,大的移動到後面
演算法實現
public class ArraySortBubble {
public static void main(String[] args) {
int[] array = new int[]{5,10,20,7,100,50,33,25}; //建立陣列
System.out.println("排序前輸出:"+Arrays.toString(array));
sort(array);//呼叫排序演算法
System.out.println("排序後輸出:"+Arrays.toString(array));
}
/**
* 氣泡排序演算法
* @param array
* @return
*/
public static int[] sort(int[] array){
for (int i = 0;i < array.length-1;i++) {
for (int j = 0;j < array.length-1-i;j++) {
//比較相鄰兩個元素值,較大的值往後冒泡
if (array[j] > array[j+1]) {
int temp = array[j]; //把第一個值儲存到臨時變數中
array[ j] = array[j+1]; //把第二個值覆蓋第一個值
array[j+1] = temp; //把臨時變數覆蓋第二個值
}
}
}
return array;
}
}
輸出結果:
2.選擇排序演算法
基本思想
將指定排序位置與其他陣列元素分別對比,滿足條件就交換元素值,每次比較選擇出最大(或者最小)的元素,直到全部排序完成。
演算法實現
public class ArraySelectSort {
public static void main(String[] args) {
int[] array = {5,2,38,69,27,66,11,19,25};
System.out.println("選擇排序前:"+ Arrays.toString(array));
sort(array);
System.out.println("選擇排序後:"+ Arrays.toString(array));
}
/**
* 直接選擇排序
* @param array 要排序的陣列
* @return
*/
public static int[] sort(int[] array){
int index;
for (int i = 1;i < array.length;i++) {
index = 0;
for (int j = 1; j <= array.length - i;j++) {
if (array[j] > array[index]) { //選擇出陣列中最大值的索引座標
index = j;
}
}
//交換在位置array.length-1和index(最大值)上的兩個數
int temp = array[array.length - i]; //最後一個元素值儲存到臨時變數
array[array.length - i] = array[index]; //將大的元素值往後移
array[index] = temp; //臨時變數複製到交換的變數
}
return array;
}
}
輸出結果:
Fighting for a better tomorrow!