首先了解一下什么是冒泡排序:
冒泡排序(Bubble Sort),是一种计算机领域的较简单的算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。
算法原理:
冒泡排序算法的运作如下:(从后往前)
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
下面是几种算法,因为现在还没学到PHP C语言之类算法,所以先把JAVASCRIPT写在前面 后面几种因为没学 就临时粘贴复制一下了,可能会有错误 希望不要介意:
JS冒泡排序:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>冒泡排序</title> </head> <body> </body> </html> <script> var arr=[3,5,4,1,2,7,9]; for (var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ var temp; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp;} } } for (var x in arr){ alert(arr[x]) } </script>
还有从网上找到的一个JS的 算法其实差不多 如下:
function bubbleSort(arr) { var i = arr.length, j; var tempExchangVal; while (i > 0) { for (j = 0; j < i - 1; j++) { if (arr[j] > arr[j + 1]) { tempExchangVal = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tempExchangVal; } } i--; } return arr; } var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8]; var arrSorted = bubbleSort(arr); console.log(arrSorted); alert(arrSorted);
剩下的就真的只能粘贴了 无能为力主要还没开始学PHP 自学C语言也只是刚刚开始 就先留着:
JAVA
1 public class BubbleSort 2 { 3 public void sort(int[] a) 4 { 5 int temp = 0; 6 for (int i = a.length - 1; i > 0; --i) 7 { 8 for (int j = 0; j < i; ++j) 9 { 10 if (a[j + 1] < a[j]) 11 { 12 temp = a[j]; 13 a[j] = a[j + 1]; 14 a[j + 1] = temp; 15 } 16 } 17 } 18 } 19 }
PHP
1 function bubbleSort($numbers) { 2 $cnt = count($numbers); 3 for ($i = 0; $i < $cnt; $i++) { 4 for ($j = 0; $j < $cnt - $i - 1; $j++) { 5 if ($numbers[$j] > $numbers[$j + 1]) { 6 $temp = $numbers[$j]; 7 $numbers[$j] = $numbers[$j + 1]; 8 $numbers[$j + 1] = $temp; 9 } 10 } 11 } 12 13 return $numbers; 14 } 15 16 $num = array(20, 40, 60, 80, 30, 70, 90, 10, 50, 0); 17 var_dump(bubbleSort($num)); 18 19 //输出结果如下: 20 //array(10) { 21 // [0]=> 22 // int(0) 23 // [1]=> 24 // int(10) 25 // [2]=> 26 // int(20) 27 // [3]=> 28 // int(30) 29 // [4]=> 30 // int(40) 31 // [5]=> 32 // int(50) 33 // [6]=> 34 // int(60) 35 // [7]=> 36 // int(70) 37 // [8]=> 38 // int(80) 39 // [9]=> 40 // int(90) 41 //}
貌似还有比较常见的C语言的
C语言:
1 #include <stdio.h> 2 #define SIZE 8 3 4 void bubble_sort(int a[], int n); 5 6 void bubble_sort(int a[], int n) 7 { 8 int i, j, temp; 9 for (j = 0; j < n - 1; j++) 10 for (i = 0; i < n - 1 - j; i++) 11 { 12 if(a[i] > a[i + 1]) 13 { 14 temp = a[i]; 15 a[i] = a[i + 1]; 16 a[i + 1] = temp; 17 } 18 } 19 } 20 21 int main() 22 { 23 int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12}; 24 int i; 25 bubble_sort(number, SIZE); 26 for (i = 0; i < SIZE; i++) 27 { 28 printf("%d", number[i]); 29 } 30 printf(" "); 31 }