------- android培训、java培训、期待与您交流! ----------
class ArrayTest4//数组(折半查找) { //1:普通的做法 需要从头开始找 效率低 //public static int getIndex(int[] arr,int key);加上了;就致命了 提示一大推见截图 public static int getIndex(int[] arr, int key) //在公共类中打印时也不要忘了是int index = getIndex_2(arr,190);不是getInddex_2(190) { for (int x=0;x<arr.length;x++ ) { if (arr[x]==key)//是== { return x;//找的是位置 所以是x 不是key } } return -1; } //2:折半查找 第一种形式 效率高 但是必须要保证该数组是有序的数组 public static int halfSearch(int []arr,int key)//返回值是int { int min,max,mid; /*arr[min]=0; arr[max]=arr.length-1; arr[mid]=(arr[min]+arr[max])>>1; 错误的*/ min=0; max=arr.length-1; mid=(min+max)/2; while (key!=arr[mid])/*当mid不等于key时 才会执行循环 如果循环没有找到"!=" 就说明 mid就是key*/ { if (key>arr[mid])//不是arr[min] { min=mid+1; } else if (key<arr[mid])//对流程控制掌握不熟 不能是else { max=mid-1; } if (min>max)//min指的是最小角标位 不是具体值 这句就是为key不在数组中准备的 { return -1; } mid=(min+max)/2;/*注意此句不能丢 在判断完 key与arr[mid]的大小后 还要继续折半写这里是找到key值(见图示)循环终止的意思 且此句不能 放到上面的if执行语句中(因为没有mid)*/ } return mid; } //3.折半查找 第二种形式 (总结第一种形式 再优化下就是) public static int halfSearch_2(int[] arr,int key) { int min=0,max=arr.length-1,mid; while (min<=max)//41行的反向思考 { mid = (max+min)>>1;//在这里写mid=(max+min)>>1 就不用总是像1那样重复了 if (key>arr[mid]) { min=mid+1; } else if (key<arr[mid]) { max=mid-1; } else return mid;//这里不能直接写return 因为else if是没有条件后的操作的 } return -1; } /* 面试题:有一个有序的数组,想要将一个元素插入到该数组中, 还要保证该数组是有序的。如何获取该元素在数组中的位置。 思路: 其实就是最后不返回-1 返回min 即可 因为按照二的方法在int[] arr = {2,4,5,7,19,32,45};数组中查看8是否存在结果是 最后返回 -1 但是要想一下 其实-1的结果是经过循环过程的 所以利用假设的思想 无论插入那一个数他都会自动地去寻找最适合放自己的位置 也就是 折半的过程展示 所以最后的min所在角标位就是要插入的最佳位置 面试可能不考程序 会问怎么办 答案:利用折半的形式查找该数在数组中的位置 存在就在存在的位置 上插入即可 不存在就返回最小的角标值 就是该位置 */ public static void main(String[] args) { //int[] arr = {3,2,1,34,8,9}; //int index = getIndex(arr,34); //System.out.println("index="+index); int[] arr = {1,4,6,7,9,23,46}; int index=halfSearch_2(arr,46); System.out.println("index="+index); System.out.println("Hello World!"); } }
相关推荐
C语言程序设计-查找算法:读懂、掌握顺序查找、折半查找算法 编写程序在数组中查找一个数。要求: ⑴用顺序查找实现; ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围...
Visual C++,有序数组的折半查找,和顺序查找法相比,其速度更快。
例如:1 2 2 2 2 3 查找其中2的个数 代码可以运行
折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)
折半查找c语言函数, 在数组总查找 例子
数据结构中的折半查找程序,C语言描述,数据结构中的折半查找程序,C语言描述
数据结构习题---折半查找代码 void BinInsert(int A[],int &n,int item) { int j,low=1,high=n,mid; while(low) { /* 利用折半查找法查找合适位置*/ mid=(low+high)/2; /* 计算当前查找部分的中间位置*/ if...
该文档详细讲述了折半查找的优点和缺点,以及适用的情况,也写了一维数组和二维数组使用折半查找的代码,,,,,,,,
使用折半查找,输入一个整数,查找是否在数组中,如在给出下标,否则-1
会变课程设计 任意输入待比较的一组数据,排序,之后再输入需要查找的数,运行即可实现折半查找,界面友好
查找问题(顺序查找法, 折半查找法,)基本思想:一列数放在数组a(1)---a(n)中,待查找的数放在x 中,把x与a数组中的元素从头到尾一一进行比较查找。用变量p表示a数组元素下标,p初值为1,使x与a(p)比较,如果x不等于a...
静态查找表。实现有序表的折半查找算法 静态查找表。实现有序表的折半查找算法 静态查找表。实现有序表的折半查找算法静态查找表。实现有序表的折半查找算法
折半查找是数据结构中,查找的其中一种。此资源不但包括折半查找的算法,还包括帮助其运行的其他代码,可直接运行以实现折半查找。注:输入数据时,要将数据从大到小依次输入,方可实现折半查找。
折半查找的递归算法,非常实用,可以实现的C语言程序
数据结构折半查找,用于C语言版的数据结构。
在该程序中,实现了在10个元素中查找20,用了顺序查找方法和折半查找方法。
主要为大家详细介绍了C语言实现顺序表的顺序查找和折半查找,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置 实现代码如下: 方法一: 选择排序法+循环折半查找法 代码如下:#include<iostream>using namespace std;int main(){ int a[15]; int n,i; ...
关于数据结构折半查找的程序代码,包含实验要求,实验目的等的相关信息。