冒泡排序的C++、JavaScript、Java实现
实现原理:以C++实现为例,排序过程使用嵌套的for循环完成的,对10个元素的数组,一个进行9轮比较,每轮要进行 len-i 次比较,以决出一个最大值。用下面的例子来说,共比较9轮,第一轮选一个最大的数放在最后,第二轮从剩下的数字中选一个最大的放在倒数第二…,直到最后一轮。
总结:冒泡排序比较容易实现,但是不论情况好坏,都要进行所有轮的比较,运行速度较慢。
(1)C++实现
void bubbleSort(int array[], int len) {
int temp;
for (int i = 1; i < len; i++) { //共比较 len-1 轮
for (int j = 0; j < len - i; j++) { //每一轮比较第一个到第len-i个数
if (array[j] > array[j + 1]) { //比较第j和j+1个数,大的放在后面
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
int main() {
int a[]={45,32,8,66,20,13,40,15,21,35};
int len = sizeof(a)/ sizeof(int);
bubbleSort(a,len);
for(int i = 0; i < len; i++){
cout<<a[i]<<" "<<endl;
}
}
//输出 8 13 15 20 21 32 35 40 45 66
(2)JavaScript实现
function bubbleSort(array) {
var temp;
for (var i = 1; i < array.length; i++) {
for (var j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
var a = [45,32,8,66,20,13,40,15,21,35];
bubbleSort(a);
console.log(a.join(" "));
//输出 8 13 15 20 21 32 35 40 45 66
(3)Java实现
public class Test {
public static void main(String[] args) {
int[] a = { 45, 32, 8, 66, 20, 13, 40, 15, 21, 35 };
bubbleSort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
private static void bubbleSort(int[] array) {
int temp;
for (int i = 1; i < array.length; i++) {
for (int j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
//输出 8 13 15 20 21 32 35 40 45 66