//冒泡排序
var brr = [23, 32, 45, 4, 12, 99, 104, 32, 1];
function maopao(arr) { //首先建立一个函数来封装一下
var l = arr.length; //把形参arr的数组长度赋值给l
for (var i = 0; i < l - 1; i++) { //让arr的下标开始第一次循环,i代表arr的下标
for (var j = 0; j < l - 1 - i; j++) { //再让arr的下标在第一次循环内循环一次,目的是在第一个循环到每一个下标的时候,在它下边让arr中的每一个内容全部循环一次
if (arr[j] > arr[j + 1]) {//现在我们开始进行判断排序,让数组中当前的内容和它后边的一进行比较
//以下整个过程其实就是一个前后内容换位的过程
var num = arr[j]; //当符合判断条件的时候,让当前的内容的赋值给num,
arr[j] = arr[j + 1]; //上边的arr[j]我们可以当它当成是空的,因为它已经赋值给num了,所以现在我们把后一个(arr[j+1)赋值给arr[j]
arr[j + 1] = num //然后我们再把后一个当成是空的,因为它也已经赋值给arr[j]了,所以现在我们把存在sum中的arr[j]赋值给arr[j+1]
}
}
}
return arr //在for循环外边输出arr
}
console.log(maopao(brr)) //把要进行排序的数组传参进去
// //快速排序
var brr = [23, 32, 45, 4, 12, 99, 104, 32, 1];
function kuaipai(arr) {
if (arr.length <= 1) { //首先我们先进行判断,当数组只有一个内容或者是空的时候(length<=1),就不需要往下进行询函判断,直接返回就行了
return arr;
}
var n = Math.floor(arr.length / 2);//我们先找见数组中间内容的下标,然后向下取整
var num = arr.splice(n, 1)[0]; //然后我们根据中间内容的下标把中间内容剪出来
var left = [], //现在我们建立两个空的数字
right = [];
for (var i = 0; i < arr.length; i++) { //对数组进行循环
if (arr[i] < num) { //当循环到的内容比中间数小的时候,把当前的内容放进左边的空数组
left.push(arr[i])
} else {
right.push(arr[i]) //当循环到的内容比中间数大的时候,把当前的内容放进右边的空数组
}
}
return kuaipai(left).concat([num], kuaipai(right)) //然后把左右两个空数组传参进函数中进行循环,直到排序完成,然后用concat把左边的数组,中间剪切出来的内容,还有右边的数组连接起来
}
console.log(kuaipai(brr)) //把要进行排序的数组传参进去