二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行....
分类:
其他好文 时间:
2014-07-11 10:40:19
阅读次数:
183
排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结;首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大)。主要包括冒泡排序,快速排序,选择排序,插入排序,希尔排序,归并排序,堆排序,8大的还有基数排序。各有各的版本,代码写法也各不相同。所以这里以整理思路为先,...
分类:
编程语言 时间:
2014-07-06 23:13:49
阅读次数:
301
它的思想是将一个无序的数组先用递归进行二分,当分解为无限小时,即为单个整数时,再对其进行排列。得出有序的数组 代码如下: package com.jll.sort; public class MergeSort { public MergeSort() { } public void merge(i...
分类:
其他好文 时间:
2014-07-06 21:01:33
阅读次数:
161
判断一颗树是不是二分查找树,非常经典基础的一个算法。我很久之前第一次做的时候,是先求出来了树的前序遍历的结果,然后判断这个数组排序后是否和排序前相同,还要判断重复虾米的,很纠结的一种做法。后来思考了一下怎么用递归的思路做,觉得应该根据定义返回两个子树的最大值和最小值,写了一会代码,发现好麻烦,不太对...
分类:
其他好文 时间:
2014-07-06 13:14:30
阅读次数:
178
templateint binarySearch(const vector &a, const comparable &x){ int low = 0, high = a.size() - 1; while(low a[center]) low = center ...
分类:
其他好文 时间:
2014-07-06 13:10:01
阅读次数:
188
把一个排好序的vector转换为一颗二分查找树。很简单的题目,递归即可,保证边界不要出错。 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; ...
分类:
其他好文 时间:
2014-07-06 12:53:50
阅读次数:
174
链表的归并排序
超时的代码
class Solution:
def merge(self, head1, head2):
if head1 == None:
return head2
if head2 == None:
return head1
# head1 and head2 point to the same link list
if head1 == he...
分类:
编程语言 时间:
2014-07-06 09:09:51
阅读次数:
275
题目:10487 - Closest Sums
题目大意:给出一组数据,再给出m个查询的数字。要求找到这组数据里的两个数据相加的和最靠近这个查询的数据,输出那两个数据的和。
解题思路:二分查找,这样找到的话,就输出查询的数值,但是要注意找不到的情况:这里最靠近的值不一定是在找不到的时刻的前一次数据,所以要维护最靠近的要查询数的数值。
代码:
#include
#inclu...
分类:
其他好文 时间:
2014-07-06 08:24:38
阅读次数:
344
(1)快速排序算法以及应用快速排序中划分的思想求数组中第k小的数,最小的前k个数。(2)归并排序算法以及利用归并排序计算数组的逆序对数。(3)堆排序...
分类:
其他好文 时间:
2014-07-05 23:03:20
阅读次数:
324
记录学习点滴,菜鸟成长记归并排序的英文叫做Merge-Sort,要想明白归并排序算法,还要从“递归”的概念谈起。1.递归一般来讲,人在做决策行事的时候是往往是从已知出发,比如,我又要举个不恰当的例子了→_→:看到漂亮姑娘→喜欢人家→追→女朋友→老婆但是人家施瓦辛格不是这么想的,人家从小就立志当总统:...
分类:
其他好文 时间:
2014-07-05 21:32:47
阅读次数:
220