冒泡排序比较任何两个相邻的数,如果第一个数比第二个数大,则交换这两个数,元素向上移动至正确的位置。
冒泡排序的算法实现:
function BubbleSort() {
const array = [];
this.insert = function(item) {
array.push(item);
}
this.toString = function() {
return array.join();
}
const swap = function(index1, index2) {
const temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
//冒泡排序
this.bubbleSort = function() {
for(let i=0; i<array.length; i++) {
for(let j=0; j<array.length-1; j++) {
if(array[j] > array[j+1]) {
swap(j, j+1);
}
}
}
}
//改进版的冒泡排序
this.bubbleSort1 = function() {
for(let i=0; i<array.length; i++) {
for(let j=0; j<array.length-1-i; j++) {
if(array[j] > array[j+1]) {
swap(j, j+1);
}
}
}
}
}
var arr = new BubbleSort();
arr.insert(3);
arr.insert(13);
arr.insert(32);
arr.insert(23);
arr.insert(11);
arr.insert(8);
arr.insert(33);
arr.insert(28);
console.log(arr.toString()); // 3,13,32,23,11,8,33,28
arr.bubbleSort();
console.log(arr.toString()); // 3,8,11,13,23,28,32,33