当前位置:编程学习 > JAVA >>

javascript排序 查找算法大全

在pptv的实习结束了, 忙着找工作的事,顺便把数据结构的那本书重新复习了一遍。为了加深印象,特意把里面的常用的排序、查找算法用js写了一遍
 
具体的实例在我的github上,    js_sort.html文件
[javascript]
//js插入排序  
    function insertSort(arr){  
        var result =[];  
        result.push(arr[0]);  
        for(var i = 1, len = arr.length; i < len; i++){  
            var el = arr[i];  
            if(result[i - 1] > el){  
                for(var j = 0; j < i; j++){  
                    if(result[j] > el){  
                        result.splice(j, 0, el);  
                        break;  
                    }  
                }  
            }else{  
                result.push(el);  
            }  
        }  
        return result;  
    }  
 
[javascript] 
//js的归并排序  
   function mergeSort(arr){  
       var len = arr.length;  
       if(len > 1){  
           var index = Math.floor(len / 2);  
           var left = arr.slice(0, index), right = arr.slice(index);  
           return merge(mergeSort(left), mergeSort(right));  
       }else{  
           return arr;  
       }  
       function merge(left, right){  
           var arr = [];  
           while(left.length && right.length){  
               if(left[0] < right[0]){  
                   arr.push(left.shift());  
               }else{  
                   arr.push(right.shift());  
               }  
           }  
           return arr.concat(left, right);  
       }  
   }  
 
[javascript] 
//js快排  
function QuickSort(arr){  
        if(arr.length <= 1){  
            return arr;  
        }  
        var index = Math.floor(arr.length / 2);  
        var key = arr.splice(index, 1)[0];  
        var left = [], right = [];  
        for(var i = 0; i < arr.length; i++){  
            if(arr[i] < key){  
                left.push(arr[i]);  
            }else{  
                right.push(arr[i]);  
            }  
        }  
        return QuickSort(left).concat([key], QuickSort(right));  
    }  
 
[javascript]
//js冒泡  
function bubbleSort(arr){  
        var len = arr.length;  
        for(var i = 0; i < len; i++){  
            for(var j = len -1; j > i; j--){  
                if(arr[j] > arr[j+1]){  
                    var temp = arr[j];  
                    arr[j] = arr[j+1];  
                    arr[j + 1] = temp;  
                }  
            }  
        }  
        return arr;  
     
 
[javascript]
//js二分查找  
    function binarySearch(arr, key, low, hight){  
        var mid = Math.floor((low + hight) / 2);  
        var result = -1;  
        console.log(key, low, hight, mid);  
        if(key == arr[mid]){  
            result = mid;  
            return result;  
        }else if(key > arr[mid]){  
            hight = mid - 1;  
            binarySearch(arr, key, low, hight);  
        }else{  
            low = mid + 1;  
            binarySearch(arr, key, low, hight);  
        }  
        return result;  
    }  
常用的其他算法
[javascript] 
//js查找两个数组中相同的元素  
   function findSame(arr1, arr2){  
       var len1 = arr1.length, len2 = arr2.length;  
       var i = 0, j = 0, result = [];  
       while(i < len1 && j < len2){  
           if(arr1[i] == arr2[j]) {  
               result.push(arr1[i]);  
               i++;  
               j++;  
           }else if(arr1[i] < arr2[j]){  
               i++;  
           }else{  
               j++;  
        &n
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,