码迷,mamicode.com
首页 >  
搜索关键字:有序数组    ( 1005个结果
算法入门之快速排序
快速排序原理: 快速排序先把等待排序的集合打乱顺序,把第一个元素作为基准元素,为第二个元素和最后一个元素分配两个指针i和j,如果a[i]小于基准元素则i++,如果a[j]大于基准元素则j--,这样把大于基准元素的a[i]和小于基准元素的a[j]互换,以此类推,最终把基准元素与a[j]相交换,就得到一个a[j]左侧全部小于a[j],右侧全部大于a[j]的一个近似有序数组,然后按照如上步骤重新寻找每个被a[j]分开的数组中的分隔点,最终得到有序数组。 在通用排序中,一般都会选取快速排序来解决问题。...
分类:其他好文   时间:2014-05-13 07:40:24    阅读次数:290
快速排序 与 随机快速排序 算法分析
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序的优点: (1)原址排序,空间复杂度较小。 (2)虽然最坏情况下(有序数组)...
分类:其他好文   时间:2014-05-09 13:50:58    阅读次数:283
【CareerCup】Trees and Graphs—Q4.3
题目: Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height. 翻译: 给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。 思路: 要使二叉树的高度最小,则要尽量使其左右子树的节点数目相当,自然就考虑到将其构造成为二叉排序树,且将有序数组的中间大的数作为根节点,这样得到的二叉树的高度便是最小的。...
分类:其他好文   时间:2014-05-01 17:48:45    阅读次数:321
有序数组去重的几种算法
最差的算法:最差的算法:去重,与数组是否有序无关public void noDups(){ //从0开始遍历 for(int i=0; i<nElems-1; i++){ //与后面每一个比较 for(j=i+1; j<nElems; j++){ ...
分类:其他好文   时间:2014-04-29 12:13:47    阅读次数:427
二分查找
【二分查找】 针对有序数组,性能非常好。 【时间复杂度】 logn 【代码】 #include #include //非递归实现二分查找 int BinarySearch1(int a[], int n, int key) { int left, right; int mid; left = 0; right = n - 1; while(left <= right) ...
分类:其他好文   时间:2014-04-27 19:42:22    阅读次数:538
1005条   上一页 1 ... 99 100 101
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!