冒泡排序比較任何兩個(gè)相鄰的數(shù),如果第一個(gè)數(shù)比第二個(gè)數(shù)大,則交換這兩個(gè)數(shù),元素向上移動(dòng)至正確的位置。
冒泡排序的算法實(shí)現(xiàn):
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);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? //改進(jìn)版的冒泡排序
? ? 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