1.冒泡排序
- 1.外循环-1
- 2.内循环-1 又 -i
- 3,内循环的邻里比较大小
- 4.两两交换位置
//冒泡排序
var arr = [2, 5, 6, 1, 7, 4, 9, 8, 3];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
2. 选择排序
//选择排序
var arr = [4, 5, 3, 2, 6];
for (var i = 0; i < arr.length - 1; i++) {
var winindex = i; //假设期望i赢
for (var j = i + 1; j < arr.length; j++) {
if (arr[winindex] > arr[j]) {
winindex = j;
}
}
//拿最大的下标对应值, 的值,进行交换位置
if (winindex != i) {
var temp = arr[winindex];
arr[winindex] = arr[i];
arr[i] = temp;
}
}
console.log(arr);
3.快速排序
var list = [4, 5, 3, 2, 6];
//递归,能实现 快速排序
function quickSort(arr) {
//1.数组的长度如果小于等于1,就终止.并返回数组
if (arr.length <= 1) { //递归的零界点
return arr
}
//2. 大于等于2个元素以上的,就需要进行拆
var middleIndex = parseInt(arr.length / 2);
//3.通过中间下标,得到中间数
// splice删除元素,返回一个数组,在配合中括号,取出里面的数组
var middleVal = arr.splice(middleIndex, 1)[0];
//4.准备2个空数组
var left = [], right = [];
//5.遍历原来数的数组,(原来的数组会少中间数)
for (var i = 0; i < arr.length; i++) {
if (arr[i] > middleVal) {
right.push(arr[i])
} else {
left.push(arr[i])
}
}
return quickSort(left).concat(middleVal, quickSort(right));
}
var newArr = quickSort(list)
console.log(newArr);
网友评论