JavaScript
常用排序方式
1. 快速排序
2. 冒泡排序
3. 选择排序
快速排序
<script>
var a = [888, 25, 18, 48, 38, 27, 166];
function qs(arr) {
// 0. 结束条件
if(arr.length <= 1){ return arr; };
// 1. 找到中间下标
var ind = Math.floor(arr.length / 2);
// console.log(ind);
// 2. 找到中间值
// var val = arr[ind];
// console.log(val);
// 3. 删除中间值
var val = arr.splice(ind, 1)[0];
// console.log(val, arr);
// 4. 创建两个空数组
var left = [], right = [];
// 5. 每一个项和中间值比较
for(var i = 0; i < arr.length; i++){
if(arr[i] < val){
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
// console.log(left, right);
// 6. 对左右数组重新排序并拼接
return qs(left).concat(val, qs(right));
}
var b = qs(a);
console.log(b);
</script>
冒泡排序
相邻的两项进行比较 如果前面的大于后面的 互换位置
<script>
var arr = [4, 2, 45, 76, 1, 345, 98, 2];
for(var i = 0; i < arr.length; i++){
// 相邻两个进行比较
for(var j = 0; j < arr.length - i; j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
console.log(arr);
</script>
选择排序
将数组的每一个项 和 当前项后面的每一个项做对比 如果后面的项大于前面的 互换位置
<script>
var arr = [1, 4, 33, 223, 66, 2, 11];
// 每一个
for(var i = 0; i < arr.length; i++){
// 每一个
for(var j = i+1; j < arr.length; j++){
if(arr[i] > arr[j]){
// 互换位置
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
</script>