1.思路
(1)对未排序的各元素从头到尾依次比较相邻的两个元素大小关系
(2)如果左边的队员高, 则两队员交换位置
(3)向右移动一个位置, 比较下面两个队员
(4)当走到最右端时, 最高的队员一定被放在了最右边
(5)按照这个思路, 从最左端重新开始, 这次走到倒数第二个位置的队员即可.
(6)依次类推, 就可以将数据排序完成
2.复杂度
比较次数:O(N^2)
交换次数:O(N^2)
3.代码实现
function ArrayList(){ this.array = [] ArrayList.prototype.insert = function(item){ this.array.push(item) }
ArrayList.prototype.bubbleSort = function(){ let length = this.array.length for(let i=length-1; i>=0; i--){ for(let j=0; j<i; j++){ if(this.array[j]>this.array[j+1]){ let temp = this.array[j] this.array[j] = this.array[j+1] this.array[j+1] = temp } } } } }
// 测试 var list = new ArrayList() list.insert(3) list.insert(6) list.insert(4) list.insert(2) list.insert(11) list.insert(10) list.insert(5) list.bubbleSort() console.log(list) // 2,3,4,5,6,10,11