冒泡排序
<script>
/*
冒泡排序
数组中相邻的两个元素进行比较,如果前一项大于后一项,就交换位置,否则就不交换位置
*/
var arr = [5, 8, 7, 4]
for(var i = 0;i < arr.length - 1;i++){ // 控制比较的次数
for(var j = 0;j < arr.length - i;j++){
if(arr[j] > arr[j + 1]){
var temp = arr[j]//通过a=b,b=c,c=a来更换两个数,另一种方法为(a,b)=(b,a)
arr[j] = arr[j+1]
arr[j + 1] = temp
}
}
}
console.log(arr)
</script>
选择排序
<script>
/*
选择排序
从第一项开始,每一项都和后面的所有的项依次比较,前一项大于后一项,交换位置,否则不交换位置
*/
var arr = [5,8,7,4]
for (var i = 0; i < arr.length - 1; i++) { // 取第一个数
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
var num = arr[i] //与冒泡排序的交换原理相同,只不过一个是前后交换,一个是与下一个交换
arr[i] = arr[j]
arr[j] = num
}
}
}
console.log(arr)
</script>
快速排序
<script>
function fun(arr){
if(arr.length <= 1){
return arr
}
var md = Math.floor(arr.length / 2)
var sum = arr.splice(md,1)[0] // 删除中间项
var left = []
var right = []
for(var i = 0;i < arr.length;i++){
if(arr[i] < sum){//通过判断后将数划分到左右数组之中
right.push(arr[i])
}else{
left.push(arr[i])
}
}
return fun(left).concat(sum,fun(right))//将两个数组拼接在一起
}
var arr = [15,11,12,7,9,4,3,10,24,30]
console.log(fun(arr))
</script>