数组排序算法包括三种:选择排序、冒泡排序和快速排序
1.选择排序
选择排序:数组从第一位开始和后面的所有元素进行比较,如果值大于后面的元素就调换位置
主要代码:
<script>
var arr = [5, 8, 7, 4, 2, 9, 6];
for (i = 0; i < arr.length; i++) {
for (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>
下图是实现的效果
2.冒泡排序
冒泡排序:数组里两个相邻的元素进行比较,值大于后面的就调换位置
主要代码:
<script>
var arr = [5, 8, 7, 4, 2, 9, 6];
for (i = 0; i < arr.length; i++) {
for (j = 0; j < arr.length; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
} console.log(arr);
</script>
效果图:
3.快速排序
快速排序:找到数组的中间项,把这项删除,将数组的值和中间项进行比较,小于中间项的放到中间项的左边,大于中间项的放到中间项的右边
代码:
<script>
var arr = [4, 6, 3, 9, 2, 8, 5, 7, 3];
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
//获取中间值
var middle = arr.splice(Math.floor(arr.length / 2), 1)[0];
//创建两个空数组
var left = [];
var right = [];
//3.判断数组中的元素,比中间值小的放left,比中间值大的放right
for (i = 0; i < arr.length; i++) {
if (arr[i] < middle) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(middle, quickSort(right));
}
console.log(quickSort(arr));
</script>
实现的图如下: