数组的排序方法
Posted z-lin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的排序方法相关的知识,希望对你有一定的参考价值。
1.冒泡排序法
<script> var arr = [3, 5, 1, 8, 2, 9, 4]; //i控制的是循环多少趟 for (var i = 0; i < arr.length - 1; i++) { //假设当前的数据是已经排好序的 var flag = true; //j控制的是每一次的比较,j和j+1比较,说明,j取到arr.length-1就可以了 //外循环i每执行一次,就会有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; //如果发生交换位置,说明没有排好序 flag = false; } } //每一次比完看flag的值,如果是true,说明已经排好序,结束循环 if(flag){ break; } } console.log(arr); </script>
2.插入排序法
<script> var arr = [3, 5, 1, 8, 2, 9, 4]; //插入排序法 for (var i = 1; i < arr.length; i++) { //从第二个数开始 var temp = arr[i]; //j表示从temp的前一个数开始,依次减减去比较 for (var j = i-1; j >= 0; j--) { //如果当前值比它的前一项小 if(temp < arr[j]){ //将前一项的位置往后移动一位 arr[j+1] = arr[j]; } else{ //如果不满足,结束循环 break; } } //当内部循环结束的时候,给temp插到对应的值 arr[j+1] = temp; } console.log(arr);
以上是关于数组的排序方法的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段