1、什麼是冒泡排序算法
冒泡排序算法是一種比較簡單的排序算法,上學時候的老是都應該講過該經典算法。
它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
這個算法的名字由來是因爲越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
2、算法的輸入與輸出
算法輸入:大小無序的一維數組
算法輸出:從小到大排序的一維素組
3、算法思想
持續的跟相鄰的元素比較大小,如果符合條件,則交換位置
4、實現過程
Java實現:
private static int[] algorithmBody(int[] data){
// 獲取數組長度
int dataLength = data.length;
for (int i = 1; i < dataLength; i++) {
for (int j = 0; j < dataLength; j++) {
if(data[j] > data[i]){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
return data;
}
調用驗證:
public static void main(String[] args) {
System.out.println("冒泡排序算法");
int testData[] = {1,5,7,8,4,2,3,6,9};
for (int i = 0; i < testData.length; i++) {
System.out.print(testData[i]);
}
System.out.println("");
int[] result = BubbleSort.algorithmBody(testData);
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
}
}
PHP實現
function BubbleSort(array $container)
{
$count = count($container);
for ($j = 1; $j < $count; $j++) {
for ($i = 0; $i < $count - $j; $i++) {
if ($container[$i] > $container[$i + 1]) {
$temp = $container[$i];
$container[$i] = $container[$i + 1];
$container[$i + 1] = $temp;
}
}
}
return $container;
}
調用驗證:
var_dump(BubbleSort([4, 21, 41, 2, 53, 1, 213, 31, 21, 423]));
Javascript實現
//從小到大
function BubbleSort(arr){
var i,j,temp;
for(i=0;i<arr.length-1;i++){
for(j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
return arr;
}
5、結論
該算法過於簡單,親手做一遍,自然就會有自己的結論與感想。