折半查找算法代码,折半查找法例题分析?

用户投稿 99 0

关于“php折半查找算法案例”的问题,小编就整理了【3】个相关介绍“php折半查找算法案例”的解答:

折半查找法例题分析?

package com.aozhi.test;

public class BinarySearch {

/*

* 循环实现二分查找算法arr[] 已排好序的数组x

* return 返回索引下标

*/

public static int binarySearch(int[] arr, int x) {

int low = 0;

int high = arr.length - 1;

while (low <= high) {//判断非空

int middle = (low + high) / 2;//折半从中间开始

if (x == arr[middle]) {//是中间的直接返回

return middle;

} else if (x < arr[middle]) {//因为他是有序的数组,可以根据中间值作比较

high = middle - 1;

} else {

low = middle + 1;

}

}

return -1;

}

public static void main(String[] args) {

int[] arr = { 6, 12, 33, 87, 90, 97, 108, 561 };

System.out.println("循环查找:" + (binarySearch(arr, 6)));

折半查找算法及代码?

#include<iostream>

#define MAX_SIZE 102

using namespace std;

template <class T>

int BinarySearch(T a[],const T&x,int n,int left,int right)

{

if(left>=right)

return -1;

else

{

if(a[(left+right)/2]==x)

return (left+right)/2;

else if(x>=(left+right)/2)

return BinarySearch(a,x,n,(left+right)/2+1,right);

else if(x<(left+right)/2)

return BinarySearch(a,x,n,left,(left+right)/2-1);

}

}

int main()

{

int a[MAX_SIZE];

int i,len,x,p;

cin>>len;

for(i=0;i<len;i++)

cin>>a[i];

cin>>x;

p=BinarySearch(a,x,len,0,len-1);

顺序查找和折半查找的算法心得?

1.顺序查找:<适合对象——无序或有序队列>

思想:逐个比较,直到找到或者查找失败。

时间复杂度:T(n) = O(n)。

2.折半查找:<适合对象——只是适用于有序表,且限于顺序存储结构(线性链表无法进行折半查找)>

思想:又称二分查找,对于已经按照一定顺序排列好的列表,每次都用关键字和中间的元素...

时间复杂度:T(n) =O(logn)。

到此,以上就是小编对于“php折半查找算法案例”的问题就介绍到这了,希望介绍关于“php折半查找算法案例”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!