Javascript的冒泡排序和二分查找

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script type= "text/javascript" >
     /**
      * js 冒泡排序
      */
     //var  numArr = [-3,-10,0,32,9,3,23];
     var   numArr = [-1,0,3,23,34,];
     var  flag =  false ;
     for ( var  i = 0; i < numArr.length -1; i++) {  //控制比较多少轮
         document.writeln( "比较多少轮:"  + (i+1) +  "<br />" );
         for ( var  j = 0; j < numArr.length - i -1;j++) { //控制每轮比较的次数
             if (numArr[j] > numArr[j+1]) {
                 //交换
                 var  temp = numArr[j];
                 numArr[j] = numArr[j+1];
                 numArr[j+1] = temp;
                 flag =  true ;
             }
         }
         if (flag) {
             flag =  false ;
         else  {
             //禁止循环,这样做的好处:当数组有序时就不要在循环了
             break ;
         }
                             
     }
     document.writeln(numArr);
</script>




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script type= "text/javascript" >
     /**
      * JS的二分查找
      * 1.注意事项:二分查找必须针对的是有序的数组,不是有序的数组不能使用二分查找法
      * 2.思路:首先找到数组的中间数(midVal),和你要查找的数(findVal)进行比较,如果
      * midVal > findVal ,则说明在数组的左边,就把该数组二分(就只在左边查找)
      */
                
     function  binarySearch(arr,findVal,leftIndex,rightIndex) {
         //防止无穷递归
         if (leftIndex > rightIndex) {
             document.writeln( "找不到" );
             return ;
         }
         //找到中间这个值
         var  midIndex = Math.floor((leftIndex + rightIndex)/2);
         var  midVal = arr[midIndex];
         //比较
         if (midVal > findVal) {
             //在左边查找
             binarySearch(arr,findVal,leftIndex,midIndex - 1);
         else  if (midVal < findVal) {
             //在右边查找
             binarySearch(arr,findVal,midIndex+1,rightIndex);
         else  {
             document.writeln( "找到了,位置为:"  + midIndex);
             return ;
         }
     }
     var  arr = [1,2,5,67,89,90];
     binarySearch(arr,3,0,arr.length -1);
</script>

==================================================================================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<script type= "text/javascript" >
     /*数组的简单行列倒置*/
     var  arr = [[2,4,6,8],[1,3,5,9],[9,7,4,2]];
            
     //定义一个新的数组
     var  arr2 = [];
     //初始化新数组的行数,我认为该数组是规则的,并初始化
     for ( var  i = 0; i < arr[0].length; i++) {
         arr2[i] = [];
     }
            
     //动态的添加新数据,遍历旧数据
     for ( var  i=0; i < arr.length; i++) {
         for ( var  j=0; j < arr[i].length; j++) {
             arr2[j][i] = arr[i][j];
         }
     }
            
     //遍历新数组,显示数据
     for ( var  i=0; i < arr2.length; i++) {
         for ( var  j=0; j < arr2[i].length; j++) {
             document.writeln(arr2[i][j] +  "&nbsp;" );
         }
         document.writeln( "<br />" );
     }
            
</script>


     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/1308498 ,如需转载请自行联系原作者





相关文章
|
7月前
|
JavaScript 算法
|
7月前
|
算法 JavaScript 前端开发
JavaScript算法和数据结构:写一个二分查找的函数。
JavaScript算法和数据结构:写一个二分查找的函数。
54 0
|
JavaScript
js实现二分查找
js实现二分查找
51 0
|
7月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
51 2
|
5月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
81 1
|
5月前
|
算法 JavaScript
JS 【算法】二分查找
JS 【算法】二分查找
40 0
|
7月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素依次触发事件,而事件捕获则从最外层元素向内层元素传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。例如: ```javascript element.addEventListener(&#39;click&#39;, console.log, false); // 冒泡 element.addEventListener(&#39;click&#39;, console.log, true); // 捕获 ```
49 0
|
7月前
|
JavaScript
JS事件,你真的懂吗(捕获,冒泡)?
JS事件,你真的懂吗(捕获,冒泡)?
65 0
|
JavaScript 前端开发
原生JavaScript之dom如何进行事件监听(事件捕获/冒泡)
原生JavaScript之dom如何进行事件监听(事件捕获/冒泡)
159 1
|
JavaScript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
45 0