1、冒泡排序
// 冒泡排序的核心就是两层for循环
let temp=0;
for(let i=0; i<arr.length; i++){
for(let j=i+1; j<arr.length; j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
};
}
}
2、快速排列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>快速排序</title>
<script>
function quickSort(arr,l,r){
if(l>=r) return;
let i=l,j=r;
// 将第一个数作为基准
let key=arr[l];
// 循环判断,将比基准数小的数都放到基准数左边,比他大的数都放到右边
while(i<j){
// 先从右边往左边判断,如果右边的数大于基准数,则该数位置不变;
// 索引j--,向左移一位,继续判断该位的数是否比key大,大了继续j--;
while(i<j && arr[j]>=key){
j--;
}
// 否则,将右边遇到的比基准数小的这个值赋给之前的arr[i]即key值的位置挖出来的坑,
// 留出arr[j]这个坑,改变方向,从左往右去判断
if(i<j){
arr[i]=arr[j];
i++;
}
// 从左边往右边判断,如果左边的数小于基准数,则索引i++;
while(i<j && arr[i]<key){
i++;
}
// 否则,将左边遇到比基准数大的这个值赋给之前的上一个arr[j]值的位置挖出来的坑,
// 留出arr[i]这个坑,改变方向,从右往左去判断
if(i<j){
arr[j]=arr[i];
j--;
}
}
arr[i]=key; // 这个时候第一次循环停止,i=j,将key放到最后留下的这个坑
// 这个时候,key值左边的数都比它小,右边的数都比它大
// 递归调用处理key值左边的数
quickSort(arr,l,i-1);
// 递归调用处理key值右边的数
quickSort(arr,i+1,r);
}
var arr=[2,1,5,8,4,6,0,7];
quickSort(arr,0,arr.length-1)
console.log(arr);
</script>
</head>
<body>
</body>
</html>
3、选择排序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>选择排序</title>
<script>
function selectSort(arr){
// 核心思想:
// 第一次遍历n-1个数,找到最小的数值与第一个元素交换,
// 第二次遍历n-2个数,找到最小的数值与第二个元素交换,
// 类推。。。
for(let i=0; i<arr.length-1; i++){
let minIndex=i; // 最小的数的下标
for(let j=i+1; j<arr.length; j++){
if(arr[j]<arr[minIndex]){
minIndex=j;
}
};
if(minIndex!==i){
let temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
};
};
}
var arr=[10,0,4,9,22,11,27,7];
selectSort(arr)
console.log(arr);
</script>
</head>
<body>
</body>
</html>
4、插入排序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>插入排序</title>
<script>
function insertSort(arr){
// 核心思想:
// 在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数插到前面的有序数列中,
// 使得这n个数也是排好顺序的。
// 如此反复循环,直到全部排好顺序。
let temp=0;
for(let i=0; i<arr.length-1; i++){
for(let j=i+1; j>0; j--){
if(arr[j]<arr[j-1]){
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}else{
// 前面的数组已经有序,如果该数比它的前一个数大,不需要再循环,因此跳出当前循环
break;
}
}
};
}
var arr=[10,0,4,9,22,11,27,7];
insertSort(arr)
console.log(arr);
</script>
</head>
<body>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66396.html