JavaScript版本各种算法

154 阅读1分钟

1二分查找

· var search = function (nums, target) {
        var low = 0;
        var high = nums.length - 1;
        while (low <= high) {
            var middle = parseInt((low + high) / 2);
            if (nums[middle] == target) {
                return middle
            }
            if (nums[middle] > target) {
                high = middle-1
            }
            if (nums[middle] < target) {
                low = middle+1
            }
        }
    };

2选择排序

   function selectionSort(array) {
        for (let i = 0; i < array.length; i++) {
            var minIndex = i
            //找出最小数的下标
            for (let j = i + 1; j < array.length; j++) {
                if (array[minIndex] > array[j]) {
                    minIndex = j
                }
            }
            //将最小数放在最前面
            var temp = array[i];
            array[i] = array[minIndex];
            array[minIndex] = temp;
        }
        return array;
    }

3 排序二叉树

	function Node(key) {
        this.key = key;
        this.left = null;
        this.right = null;
    }

    function BinaryTree() {
        var root = null;
        var insertNode = function (node, newNode) {
            if (node.key > newNode.key) {
                if (node.left == null) {
                    node.left = newNode
                } else {
                    insertNode(node.left,newNode)
                }
            } else {
                if (node.right == null) {
                    node.right = newNode
                } else {
                    insertNode(node.right,newNode)
                }
            }
        }
        this.insert = function (key) {
            let newNode = new Node(key)
            if (root == null) {
                root = newNode
            } else {
                insertNode(root, newNode)
            }
        }
    }