摘要:
方法一:基于快排 1 /* 2 基于区间快排的第K小算法 ,输出a[k-1]即可,O(n*logn);每次只对后半部分递归便可把复杂度降到O(n) 3 主要思路是每次随机在数组中选取一个元素p,利用这个元素将数组分成两部分,比p小的元素在分好的数组左边,p和比p大的元素在数组右边, 4 根据k值选... 阅读全文
posted @ 2013-03-13 09:10
加拿大小哥哥
阅读(727)
评论(0)
推荐(0)
摘要:
一个数组a[0...n-1],求a[j]-a[i]的最大值,其中i<j。 cite:http://mars914.iteye.com/blog/1667259第一种方法: 从左往右求下标0到 k - 1 的最小值MIN 从右往左求 下标k到n -1 的最大值MAX,对于每个k都有一个MAX ... 阅读全文
posted @ 2013-03-13 08:15
加拿大小哥哥
阅读(1778)
评论(0)
推荐(0)
摘要:
1 /* 2 一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum O(nlogn) 3 解题思路:先排序 在左右夹击判断,类似二分查找的思想。 4 */ 5 #include <stdio.h> 6 #include <stdlib.h> 7 int find(int a[], int len, int sum, int *x, int *y) 8 { 9 10 int i = 0, j = len - 1;11 12 if (sum < a[0]) {13 return -1;14 }15 16 whil... 阅读全文
posted @ 2013-03-13 07:57
加拿大小哥哥
阅读(459)
评论(0)
推荐(0)

浙公网安备 33010602011771号