int binary_search(int[] list, int item) { int low = 0; int high = list.length-1; while (low <= high) { int mid = int((low + high)/2); int guess = list[mid]; if (guess == item) { return mid; } if (guess > item) { high = mid -1; } else { low = mid+1;…
import java.util.Map; // Note the HashMap's "key" is a String and "value" is an Integer HashMap<String,Integer> hm = new HashMap<String,Integer>(); // Putting key-value pairs in the HashMap hm.put("Ava", 1); hm.pu…
int pivotIndex, pivot, swapIndex; void swap(int[] arr, int x, int y) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } void quickSort(int[] arr, int start, int end) { if (end <= start) return; pivotIndex = (start + end)/2; pivot = arr[pivotIndex…
int[] selection_sort(int[] arr) { int i, j, min, temp, len=arr.length; for (i=0; i<len-1; i++) { min=i; for (j=i+1; j<len; j++) { if (arr[min]<arr[j]) { min=j; } temp = arr[min]; arr[min] = arr[i]; arr[i]=temp; } } return arr; } void draw() { noL…
二叉查找树基础 二叉查找树(BST)满足这样的性质,或是一颗空树:或左子树节点值小于根节点值.右子树节点值大于根节点值,左右子树也分别满足这个性质. 利用这个性质,可以迭代(iterative)或递归(recursive)地用O(lgN)的时间复杂度在二叉查找树中进行值查找. 相关LeetCode题: 700. Search in a Binary Search Tree  题解 701. Insert into a Binary Search Tree  题解 450. Delete Node…
1. 概念: Binary-search tree(BST)是一颗二叉树,每个树上的节点都有<=1个父亲节点,ROOT节点没有父亲节点.同时每个树上的节点都有[0,2]个孩子节点(left child AND right child).每个节点都包含有各自的KEY值以及相应的satellite data.其中KEY是几种BST基本操作的主要操作对象. 2. BST的特别性质: BST任何一颗子树上的三个节点left, parent, right. 满足条件left.key<parent.key…
模板:(通用模板,推荐) 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1. int binarySearch(vector<int> &array, int target) { ) { ; } ; ; int mid; < end) { mid = start + (end - start) / ; if (array[mid] == target) {…
当我们在字典中查找某个单的时候,一般我们会翻到一个大致的位置(假设吧,翻到中间位置),开始查找.如果翻到的正好有我们要的词,那运气好,查找结束.如果我们要找的词还在这个位置的前面,那我们对前面的这一半词典继续搜索,翻到某个位置(假设是四分之一的位置)等等.这个二分搜索的工作原理一样.相应的算法就叫做二进制搜索算法. 迭代版本算法: //iterative binary search which returns index of element int binarySearchIterative(…
Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. Binary Search int search(vector<int>& nums, int target) { //nums为已排序数组 ,j=nums.size()-; while(i<=j){ ; if(nums[mid]==target) return mid; ; ;…
前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一节课,说真的很实用,特别是对于我这种算法不扎实,并且又想找工作,提高自己的情况. 那就不多说废话了,以后每周都写个总结吧,就趁着这一个月好好把算法提高一下.具体就从:课堂笔记.leetcode和lintcode相关习题.hdu和poj相关习题三个方面来写吧.希望自己能够坚持下来,给大家分享一些好的东…