判断序列中是否存在两个元素之和为x,时间复杂度O(nlgn),算法导论练习2.3,linux纯C实现
2013-10-23 17:05
661 查看
代码可在anycodes在线编译测试
#include <stdio.h> #include <stdbool.h> bool binarySearch(int* a, int L, int N) { int fI = 0, lI = L-1, mI = 0; while(fI <= lI) { mI = (fI+lI) >> 1; if(N > *(a+mI)) fI = mI + 1; else if(N < *(a+mI)) lI = mI - 1; else return true; } return false; } bool search(int* a, int L, int N) { int i = 0; for (;i<L-1;i++) { if(binarySearch(a, L, N-(*(a+i)))) return true; } return false; } int binarySort(int* a, int fI, int lI, int N) { int mI = (fI+lI) >> 1; if (N > *(a+mI)) { fI = mI + 1; if(fI > lI) return mI+1; binarySort(a, fI, lI, N); } else if (N < *(a+mI)) { lI = mI - 1; if(fI > lI) return mI; binarySort(a, fI, lI, N); } else return mI+1; } void insertSort(int* a, int index, int N) { int key = *(a+index); if(index+1 <= N) { int i = binarySort(a, 0, index-1, key); int j = index-1; for (;j>=i;j--) { *(a+j+1) = *(a+j); } *(a+i) = key; insertSort(a, index+1, N); } return; } int main() { int a[10] = {212,343,534,2,3,67,34,78,90,32}; int L = sizeof(a)/sizeof(int); int i = 0; int x = 5360; insertSort(a, 1, L); for (;i<L;i++) printf("%d ",*(a+i)); printf("\n"); if(search(a, L, x)) printf("Yes! \n"); else printf("No! \n"); return 0; }
相关文章推荐
- 二分法实现插入排序,时间复杂度O(nlgn),算法导论练习2.3,linux纯C实现
- 2.3-7 描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素
- 题目1.请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个证书x时,判断出S中是否存在有两个其和等于x的元素。
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素
- 判断两个时间区间是否存在交集-Java实现
- java中如何高效判断两个容器是否有相同元素(时间复杂度为O(1))
- 在一个长度为n(n < 1000)的整数序列中,判断是否存在某两个元素之和为k。
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
- 《算法导论》习题2.3-7 查找集合S中是否有两个元素和为X---Java实现
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 给出一个实数集合和一个实数,怎样判断集合中是否存在两个和等于该实数的元素
- 图结构练习——判断给定图是否存在合法拓扑序列(拓扑排序判断环)
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)
- 算法学习笔记----判断集合S中是否存在有两个其和等于x的元素
- SDUT 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- SDUT2140图结构练习——判断给定图是否存在合法拓扑序列