算法
小白家的小黑
我爱学习
展开
-
折半查找(分治法实现)
折半查找(二分查找) 递归算法 #include<stdio.h> int BinSearch(int a[],int low,int high,int k)//折半查找算法 { int mid; if(low<=high) //当区间存在元素时 { mid=(low+high)/2; //求查找区间的中间位置 if(a[mid]==k) //找到后原创 2021-06-30 21:26:19 · 683 阅读 · 0 评论 -
快速排序(分治算法实现)
快速排序(分治算法实现) 代码: //分治法解决快速排序 #include<stdio.h> void disp (int a[],int n) //输出a中所有元素 { int i; for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n"); } int Partition(int a[],int s,int t) //划分算法 { int i=s,j=t; int tmp=a[s];原创 2021-06-27 19:20:46 · 532 阅读 · 0 评论 -
蛮力法求解幂集问题
蛮力法求解幂集问题 直接穷举求解,将1-n存放到数组a中,求解问题变为构造集合a的所有子集合。设集合a[0…2]={1,2,3},其所有集合元素对应的二进制位及其十进制位如下表所示。 集合元素 对应的二进制位 对应的十进制位 { } — — {1} 001 1 {2} 010 2 {1,2} 011 3 {3} 100 4 {1,3} 101 5 {2,3} 110 6 {1,2,3} 111 7 因此对于含有n(n≥1)个元素的集合a,求幂集的过程如下 fo原创 2021-06-22 17:02:11 · 528 阅读 · 0 评论 -
回溯法总结
回溯法总结 解空间树有两种。子集树和排列数 搜索解空间树时,常用的两种剪枝函数为:约束函数和限界函数 递归回溯框架 1.解空间为子集树 int x[n]; //x存放解空间,为全局变量 void backtrack(int i) //求解子集树的递归框架 { if(i>n) //搜索到叶子结点,输出一个可行解 输出结果; else { for(j=下界;j<=上界;j++) //用j枚举i所有可能的路径 {原创 2021-06-21 21:41:50 · 575 阅读 · 2 评论