回温一下 JavaScript中的冒泡排序
原理:依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确。
时间复杂度,空间复杂度,稳定性:
时间复杂度 指的是一个算法执行所耗费的时间
空间复杂度 指运行完一个程序所需内存的大小
稳定 指如果a=b,a在b的前面,排序后a仍然在b的前面,不稳定指,如果a=b,a在b的前面,排序后可能会交换位置
<script type="text/javascript">
var arr = [12, 34, 28, 28, 15, 13, 27, 46];
// reverse 倒序 noReverse 正序
console.log(BubbleSort(arr,'noReverse'))
function BubbleSort(arr,order) {
// i 是比较的次数 因为是两两相比 所以这里 i 从 1 开始到 length-1
for (let i = 1; i < arr.length; i++) {
for(let j = 0; j < arr.length-i; j++) {
if (order === 'reverse') {
if (arr[j] > arr[j+1]) {
var item = arr[j];
arr[j] = arr[j+1];
arr[j+1] = item;
}
}else if (order === 'noReverse') {
if (arr[j] < arr[j+1]) {
var item = arr[j];
arr[j] = arr[j+1];
arr[j+1] = item;
}
}
}
};
return arr
};
</script>
现成的排序方法:sort()
使用方法:sort(function (a,b){return a-b}) 从小到大排
sort(function (a,b){return b-a}) 从大到小排
//升序
var arr = [4,3,6,5,7,2,1]; arr.sort(function(a,b){ return a-b }); console.log(arr);
//降序
var arr = [4,3,6,5,7,2,1]; arr.sort(function(a,b){ return b-a }); console.log(arr);