zoukankan      html  css  js  c++  java
  • JS 排序:冒泡、 二分搜索 /折半搜索 half-interval search

    冒泡排序:  重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

     1     var arr = [5,0,-56,900,12];
     2     //大的排序次数
     3     for(var i=0; i<arr.length-1; i++){
     4         //小的排序
     5         for(var j=0; j<arr.length-1-i; j++){
     6             //交换
     7             if(arr[j] > arr[j+1]){
     8                 temp = arr[j];
     9                 arr[j] = arr[j+1];
    10                 arr[j+1] = temp;
    11             }
    12         }
    13     }
    14 
    15     for(var i=0; i<arr.length; i++){
    16         document.write(arr[i]+"&nbsp;");
    17     }
    18 
    19     //-56 0 5 12 900 

    选择排序(Selection Sort)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 

    插入排序(英语:Insertion Sort)通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

    快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

    二分查找/折半搜索

     1  //二分查找,前提: 该数组是有序的,如果不是有序的数组,不能使用
     2  //思路: 找到数组的中间数(midVal),和你要查找的数(findVal)进行比较,如果midVal > findVal,则说明findVal在数组的左边,就把该数组二分(就只在左边查找)
     3      var arr = [1,4,6,8,9,90,800];
     4      //leftIndex rightIndex
     5      function binarySearch(arr,findVal,leftIndex,rightIndex){
     6          //进行查找有一个前提,防止无穷递归
     7          if(leftIndex > rightIndex){
     8              //提示找不到
     9              document.write("找不到");
    10              return;
    11          }
    12          //找到中间这个值
    13          var midIndex = Math.floor((leftIndex+rightIndex)/2);//向下取整
    14          var midVal = arr[midIndex];
    15          //比较
    16          if(midVal > findVal){
    17              //在左边找
    18              binarySearch(arr, findVal, leftIndex, midIndex - 1);
    19          }else if(midVal < findVal){
    20              //在右边找
    21              binarySearch(arr, findVal, midIndex + 1, rightIndex,);
    22          }else{
    23              document.write("找到了,下标是"+midIndex);
    24              return;
    25          }
    26      }
    27      //测试
    28      binarySearch(arr,9, 0, arr.length-1 );
    29      //找到了,下标是4
  • 相关阅读:
    centos : 创建交换分区
    用法记录
    mysql日志清理
    mysql 通过查看mysql 配置参数、状态来优化你的mysql
    [WPF 自定义控件]Window(窗体)的UI元素及行为
    [WPF 自定义控件]为Form和自定义Window添加FunctionBar
    [WPF 自定义控件]让Form在加载后自动获得焦点
    [WPF 自定义控件]简单的表单布局控件
    [WPF 自定义控件]以Button为例谈谈如何模仿Aero2主题
    [WPF 自定义控件]自定义控件的代码如何与ControlTemplate交互
  • 原文地址:https://www.cnblogs.com/it80/p/7054522.html
Copyright © 2011-2022 走看看