亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

定義一個函數,接收一個數組與一個要查找的元素

定義一個函數,接收一個數組與一個要查找的元素

AJohnson 2016-04-09 10:07:22
問題:定義一個函數,接收一個數組與一個要查找的元素,如果該元素存在數組中,那么返回該元素在數組中的索引值,如果不存在返回-1。package com.blackhorse.practise;public class Demo7 { public static void main(String[] args) { // TODO 自動生成的方法存根 int[] s = {2,4,6,5,7,9,8}; int t =getNum(s,6);? ? ? ? ?System.out.println(t); }? ? public static ?int getNum(int[] b,int a){? ? for(int i=0;i<b.length;i++){? ? if(a ==b[i]){? ? return i;? ? }else if(a!=b[i]){? ? return -1;? ? }? ? } return 0;//程序不對,未完成? ? ? ? }}程序不完善,不太會寫了,求大神幫助(希望高手能附上第二種寫法,還能用二分查找,在此萬分感謝?。?
查看完整描述

1 回答

已采納
?
_瀟瀟暮雨

TA貢獻646條經驗 獲得超225個贊

/**
?*?查找工具類,實現簡單的查找、二分查找
?*/
public?class?FindUtil?{
	
	/**
	?*?構造器私有化
	?*/
	private?FindUtil()?{
		
	}

	/**
	?*?普通查找
	?*?@param?arr數組
	?*?@param?key需要查找的關鍵字
	?*?@return
	?*/
	public?static?int?search(int?arr[],?int?key)?{

		if?(arr?==?null?||?arr.length?==?0)?{
			return?-1;
		}
		for?(int?i?=?0;?i?<?arr.length;?i++)?{
			if?(key?==?arr[i])
				return?i;
		}
		return?-1;
	}

	/**
	?*?二分查找的非遞歸實現?特別注意,以下算法只能針對一個升序排列的數組
	?*/
	public?static?int?binarySearch(int[]?arr,?int?key)?{

		if?(arr?==?null?||?arr.length?==?0){?
			return?-1;
		}
		
		int?minIndex?=?0,?maxIndex?=?arr.length?-?1,?midIndex;
		while?(minIndex?<=?maxIndex)?{
			midIndex?=?(minIndex?+?maxIndex)?>>?1;?		//?右移一位相當于除以2
			if?(key?==?arr[midIndex])
				return?midIndex;
			if?(key?<?arr[midIndex])
				maxIndex?=?midIndex?-?1;
			if?(key?>?arr[midIndex])
				minIndex?=?midIndex?+?1;
		}
		return?-1;
	}

	/**
	?*?二分查找的遞歸實現---實際上是一種分治算法
	?*?
	?*?@param?arr數組
	?*?@param?midIndex最低位置
	?*?@param?maxIndex最高位置
	?*?@param?key需要查找的值
	?*?@return元素的位置
	?*/
	public?static?int?binarySearch(int[]?arr,?int?minIndex,?int?maxIndex,int?key)?{

		if?(arr?==?null?||?arr.length?==?0)?
			return?-1;
		if?(minIndex?<=?maxIndex)?{
			int?midIndex?=?(minIndex?+?maxIndex)?/?2;
			if?(key?==?arr[midIndex])
				return?midIndex;
			else?if?(key?<?arr[midIndex])
				return?binarySearch(arr,?minIndex,?midIndex?-?1,?key);
			else
				return?binarySearch(arr,?midIndex?+?1,?maxIndex,?key);
		}?else?{
			return?-1;
		}

	}
	
}


查看完整回答
反對 回復 2016-04-09
  • 1 回答
  • 1 關注
  • 2080 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號