将数组 arr 通过两种排序方法,进行排序为 123456789.
1.什么是冒泡排序
答: 是一种计算机科学领域的常用的较简单的排序算法,冒泡排序的基本原理是两两比较待排序数据的大小 ,当两个数据的次序不满足顺序条件时即进行交换,反之,则保持不变,这样每次最小(或最大)的结点就像气泡一样浮到序列的最前位置。
<script type="text/javascript">
// 编写方法,实现冒泡
var arr = [29,45,51,68,72,97];
//外层循环,控制趟数,每一次找到一个最大值
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];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
</script>
2.什么是快速排序
答:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都小于或者等于另外一部分的所有数据,然后再按照此方法对这两部分数据分别进行快速排序,整个排序的过程可以递归进行,以此达到整个数据变成有序序列。
<script>
function sort(arr, x, y) {
// 判断传入的值是否为数组的起点索引,与终点索引
if (x < y) {
// 声明一个指针分别指向传入的数组的首位与末位
var i = x;
var j = y;
// 声明一个基数
var contrast = arr[x];
while (i < j) {
while (arr[j] > contrast && i < j) {
j--;
}
arr[i] = arr[j];
while (arr[i] < contrast && i < j) {
i++;
}
arr[j] = arr[i];
}
//让数组的基数放在最中间
arr[j] = contrast;
// 将基数左边快排
sort(arr, x, i - 1);
// 将基数右边快排
sort(arr, i + 1, y);
}else{
return
}
}
var arr = [2, 6, 1, 4, 8, 7, 9, 3,5];
// 数组最后一个的下标值
var Length = arr.length-1;
// 调用函数将数组传入进去,同时传入第一个与最后一个值
sort(arr, 0, Length);
console.log(arr);
</script>