思想:将N个元素分别分成个数大致相同的两半,取中间a[n/2],如果x=a[n/2],则找到x,算法终止,如果x<a[n/2],则在a[n]的左半部分继续查找x,如果x>a[n/2],则在a[n]的右半部分继续查找,递归执行此算法。
#include<stdio.h>
#include<math.h>
void sort(int a[],int n)// sort fuction
{
int i,j,k;
int m;
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(j=0;j<n-1;j++)
{
for(k=j+1;k<n;k++)
{
if(a[j]>a[k])
{
m=a[j]; a[j]=a[k];a[k]=m;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}
int BinarySearch(int a[],int x,int n)//index fuction
{
int left=0;
int right=n-1;
int mid;
while(left<=right)
{
mid=(left+right)/2;
if(x==a[mid]) return mid;
if(x>a[mid])
left=mid+1;
else
right=mid-1;
}
return -1;//the data is not found
}
void main()
{
int i;
int a[10]={1,3,5,10,6,9,11,2,20,14};
sort(a,10); //order
printf("\nplease input the data you want to find \n");
scanf("%d",&i);
if(BinarySearch(a,i,10)==-1)
{
printf("the data is not found \n");
}
else
{
printf("the data address is:");
printf("%d\n",BinarySearch(a,i,10));
printf("the data is:\n");
printf("%d\n",a[BinarySearch(a,i,10)]);
}
}
分享到:
相关推荐
- **查找算法**:包括线性查找、二分查找等,讨论各种查找方法的特点及其适用场景。 - **贪心算法**:介绍贪心策略的基本思想,通过实例讲解如何设计有效的贪心算法解决实际问题。 - **动态规划**:探讨动态规划的...
- **二分查找**: - 时间复杂度:O(logn)。 - 适用场景:已排序的数据集。 - **哈希查找**: - 时间复杂度:O(1)。 - 适用场景:需要快速查找的场合。 ### 四、编程实践技巧 #### 4.1 调试技巧 - **断点调试**...
2. **查找算法**:包括顺序查找、二分查找、哈希查找等,以及在不同数据结构中的应用。 3. **图论与树**:讲解了图的遍历(深度优先搜索和广度优先搜索)、最小生成树(Prim算法或Kruskal算法)、最短路径...
本书涵盖了丰富的算法类型,包括但不限于排序算法(如冒泡排序、快速排序、归并排序、堆排序等)、搜索算法(如二分查找、深度优先搜索、广度优先搜索等)、图论算法(如最短路径算法Dijkstra、最小生成树Prim和...
常见的算法有排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)、搜索算法(如二分查找、深度优先搜索、广度优先搜索)、图算法(如最短路径Dijkstra算法、拓扑排序)、动态规划、贪心算法等...
### Java集合与算法知识点 ...此外,还讨论了集合与数组之间的转换方法以及常用的排序算法和二分查找算法。通过学习这些知识点,开发者可以更好地利用Java标准库中的工具,提高编程效率和代码质量。
3. **二分查找**:针对有序数组的有效查找方法,通过不断缩小查找范围来提高效率。 ### 五、贪心算法与动态规划 1. **贪心算法**:在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择策略以求得整体最...
- 二分查找是一种高效的查找算法,适用于有序数组。 - 二分查找的基本思路是从数组中间开始查找,如果中间元素刚好是要查找的元素,则返回该元素的索引;如果要查找的元素小于中间元素,则在左半部分继续查找;...
二分搜索在已排序的数组中查找元素具有高效性,而图的搜索算法则常用于解决网络问题,如最短路径问题。 图算法是解决复杂问题的关键,如Dijkstra算法用于找出单源最短路径,Floyd-Warshall算法用于求解所有对最短...
- **查找算法**:如二分查找、哈希表查找,这些方法能高效地定位数据,是数据结构和算法设计的核心部分。 - **图论算法**:如Dijkstra最短路径算法、Floyd-Warshall所有对最短路径算法,以及拓扑排序,这些都是...
- 二分查找是一种在有序数组中查找特定元素的高效算法,其时间复杂度为\(O(\log n)\)。 - 实现二分查找的关键在于正确维护左右边界,并且在每次迭代中将搜索范围减半。 - 示例代码: ```python def binary_...
3.2 查找算法:顺序查找、二分查找、哈希查找等,其中二分查找适用于有序数据,哈希查找则提供快速查找但需要额外空间。 四、图论 4.1 图的基本概念:顶点、边、邻接矩阵、邻接表等,图论在解决网络问题、最短路径...
1. **排序与搜索算法**:包括快速排序、归并排序、堆排序、二分查找等经典算法,这些都是解决数据组织和检索问题的基础。 2. **图论**:如深度优先搜索(DFS)、广度优先搜索(BFS)、最小生成树(Prim或Kruskal)...
这篇课堂笔记主要涵盖了三个核心的计算机科学概念:二分查找、二维数组以及数组的复制。这些知识点在编程学习,特别是数据结构与算法的学习中占据着重要地位。 首先,我们来详细探讨二分查找。二分查找,也被称为...