欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

java二分查找遞歸代碼 二分查找遞歸和非遞歸

一道Java二分查找題目 程序運行超時 求解答

圖中這個時間是包含在控制臺輸入的時間嗎?

目前創新互聯已為超過千家的企業提供了網站建設、域名、虛擬空間、網站托管、服務器租用、企業網站設計、海淀網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

java泛型 二分查找

以下代碼是關于對象的 二分查找 的例子,已經測試通過,執行即可。

Student 是基本比較對象類

Dichotomy 是二分法執行類

Test 是測試類

package com.dichotomy;

public class Student implements ComparableStudent {

private int id;

private String name;

private String idCard;

private String sex;

private String mobile;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getIdCard() {

return idCard;

}

public void setIdCard(String idCard) {

this.idCard = idCard;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getMobile() {

return mobile;

}

public void setMobile(String mobile) {

this.mobile = mobile;

}

/**

* 排序控制

* @param o1 Student

* @param o2 Student

* @return int 返回 -1 向前移動, 1 向后移動, 0 不移動

* 這個方法需要自己進行調整,排序比較和二分查找時均使用此方法進行位置調整

* 比較時使用的key自己可以進行修改,不過要保證唯一性,否則查詢出來的值會不準確

*/

public int compareTo(Student o) {

//不同的執行次序決定排序和查找次序不同,可以同下面的調換一下

if(this.getId() o.getId()){

return -1;

} else if(this.getId() == o.getId()){

;

} else {

return 1;

}

//不同的執行次序決定排序和查找次序不同

int c = this.getIdCard().compareTo(o.getIdCard());

if(c != 0){

return c;

}

//不同的執行次序決定排序和查找次序不同

int n = this.getName().compareTo(o.getName());

if(n != 0){

return n;

}

return 0;

}

public String toString(){

StringBuffer sb = new StringBuffer();

sb.append(this.getId()).append("\t");

sb.append(this.getName()).append("\t");

sb.append(this.getIdCard()).append("\t");

sb.append(this.getMobile()).append("\t");

sb.append(this.getSex());

return sb.toString();

}

}

用java寫二分搜索,要求數組是由用戶輸入,再輸入時,數組是無序的,要對數組進行從小到大的排序

二分查找又稱折半查找,它是一種效率較高的查找方法。

【二分查找要求】:1.必須采用順序存儲結構 2.必須按關鍵字大小有序排列。

/**

* 二分查找又稱折半查找,它是一種效率較高的查找方法。

【二分查找要求】:1.必須采用順序存儲結構 2.必須按關鍵字大小有序排列。

* @author Administrator

*

*/

public class BinarySearch {

public static void main(String[] args) {

int[] src = new int[] {1, 3, 5, 7, 8, 9};

System.out.println(binarySearch(src, 3));

System.out.println(binarySearch(src,3,0,src.length-1));

}

/**

* * 二分查找算法 * *

*

* @param srcArray

* 有序數組 *

* @param des

* 查找元素 *

* @return des的數組下標,沒找到返回-1

*/

public static int binarySearch(int[] srcArray, int des){

int low = 0;

int high = srcArray.length-1;

while(low = high) {

int middle = (low + high)/2;

if(des == srcArray[middle]) {

return middle;

}else if(des srcArray[middle]) {

high = middle - 1;

}else {

low = middle + 1;

}

}

return -1;

}

/**

*二分查找特定整數在整型數組中的位置(遞歸)

*@paramdataset

*@paramdata

*@parambeginIndex

*@paramendIndex

*@returnindex

*/

public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){

int midIndex = (beginIndex+endIndex)/2;

if(data dataset[beginIndex]||datadataset[endIndex]||beginIndexendIndex){

return -1;

}

if(data dataset[midIndex]){

return binarySearch(dataset,data,beginIndex,midIndex-1);

}else if(datadataset[midIndex]){

return binarySearch(dataset,data,midIndex+1,endIndex);

}else {

return midIndex;

}

}

}

用二分法查找(折半查找)java

二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲結構,而且表中元素按關鍵字有序排列。

二分查找優缺點

優點是比較次數少,查找速度快,平均性能好;

其缺點是要求待查表為有序表,且插入刪除困難。

因此,折半查找方法適用于不經常變動而查找頻繁的有序列表。

使用條件:查找序列是順序結構,有序。

過程

首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的關鍵字大于查找關鍵字,則進一步查找前一子表,否則進一步查找后一子表。重復以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。

利用循環的方式實現二分法查找

public class BinarySearch {

public static void main(String[] args) {

// 生成一個隨機數組 ? ? ? ?int[] array = suiji();

// 對隨機數組排序 ? ? ? ?Arrays.sort(array);

System.out.println("產生的隨機數組為: " + Arrays.toString(array));

System.out.println("要進行查找的值: ");

Scanner input = new Scanner(System.in);

// 進行查找的目標值 ? ? ? ?int aim = input.nextInt();

// 使用二分法查找 ? ? ? ?int index = binarySearch(array, aim);

System.out.println("查找的值的索引位置: " + index);

}

/** ? ? * 生成一個隨機數組 ? ? *

* @return 返回值,返回一個隨機數組 ? ? */

private static int[] suiji() {

// random.nextInt(n)+m ?返回m到m+n-1之間的隨機數 ? ? ? ?int n = new Random().nextInt(6) + 5;

int[] array = new int[n];

// 循環遍歷為數組賦值 ? ? ? ?for (int i = 0; i array.length; i++) {

array[i] = new Random().nextInt(100);

}

return array;

}

/** ? ? * 二分法查找 ?---循環的方式實現 ? ? *

* @param array 要查找的數組 ? ? * @param aim 要查找的值 ? ? * @return 返回值,成功返回索引,失敗返回-1 ? ? */

private static int binarySearch(int[] array, int aim) {

// 數組最小索引值 ? ? ? ?int left = 0;

// 數組最大索引值 ? ? ? ?int right = array.length - 1;

int mid;

while (left = right) {

mid = (left + right) / 2;

// 若查找數值比中間值小,則以整個查找范圍的前半部分作為新的查找范圍 ? ? ? ? ? ?if (aim array[mid]) {

right = mid - 1;

// 若查找數值比中間值大,則以整個查找范圍的后半部分作為新的查找范圍 ? ? ? ? ? ?} else if (aim array[mid]) {

left = mid + 1;

// 若查找數據與中間元素值正好相等,則放回中間元素值的索引 ? } else {

return mid;

}

}

return -1;

}}

運行結果演示:

由以上運行結果我們得知,如果要查找的數據在數組中存在,則輸出該數據在數組中的索引;如果不存在則輸出 -1 ,也就是打印 -1 則該數在數組中不存在,反之則存在。

四、利用遞歸的方式實現二分法查找

public class BinarySearch2 {

public static void main(String[] args) {

// 生成一個隨機數組 ? ? ? ?int[] array = suiji();

// 對隨機數組排序 ? ? ? ?Arrays.sort(array);

System.out.println("產生的隨機數組為: " + Arrays.toString(array));

System.out.println("要進行查找的值: ");

Scanner input = new Scanner(System.in);

// 進行查找的目標值 ? ? ? ?int aim = input.nextInt();

// 使用二分法查找 ? ? ? ?int index = binarySearch(array, aim, 0, array.length - 1);

System.out.println("查找的值的索引位置: " + index);

}

/** ? ? * 生成一個隨機數組 ? ? * ? ? * @return 返回值,返回一個隨機數組 ? ? */

private static int[] suiji() {

// Random.nextInt(n)+m ?返回m到m+n-1之間的隨機數 ? ? ? ?int n = new Random().nextInt(6) + 5;

int[] array = new int[n];

// 循環遍歷為數組賦值 ? ? ? ?for (int i = 0; i array.length; i++) {

array[i] = new Random().nextInt(100);

}

return array;

}

/** ? ? * 二分法查找 ---遞歸的方式 ? ? * ? ? * @param array 要查找的數組 ? ? * @param aim ? 要查找的值 ? ? * @param left ?左邊最小值 ? ? * @param right 右邊最大值 ? ? * @return 返回值,成功返回索引,失敗返回-1 ? ? */

private static int binarySearch(int[] array, int aim, int left, int right) {

if (aim array[left] || aim array[right]) {

return -1;

}

// 找中間值 ? ? ? ?int mid = (left + right) / 2;

if (array[mid] == aim) {

return mid;

} else if (array[mid] aim) {

//如果中間值大于要找的值則從左邊一半繼續遞歸 ? ? ? ? ? ?return binarySearch(array, aim, left, mid - 1);

} else {

//如果中間值小于要找的值則從右邊一半繼續遞歸 ? ? ? ? ? ?return binarySearch(array, aim, mid + 1, array.length-1);

}

}}

運行結果演示:

總結:

遞歸相較于循環,代碼比較簡潔,但是時間和空間消耗比較大,效率低。在實際的學習與工作中,根據情況選擇使用。通常我們如果使用循環實現代碼只要不是太繁瑣都選擇循環的方式實現~

文章題目:java二分查找遞歸代碼 二分查找遞歸和非遞歸
轉載來于:http://www.kartarina.com/article14/dodhsde.html

成都網站建設公司_創新互聯,為您提供微信公眾號、網站制作、微信小程序、網頁設計公司、定制網站手機網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
麻豆精品在线看| 国产精品久久久久影院老司 | 欧美人妇做爰xxxⅹ性高电影| 欧美一级理论片| 亚洲成av人片www| 欧美日韩国产综合草草| 亚洲韩国精品一区| 69堂精品视频| 精品在线亚洲视频| 国产精品日日摸夜夜摸av| 久久精品视频网| 91在线精品秘密一区二区| 亚洲免费视频中文字幕| 欧美调教femdomvk| 麻豆精品视频在线观看| 国产色产综合产在线视频| 成人激情校园春色| 午夜视频在线观看一区二区三区| 欧美日本乱大交xxxxx| 蜜桃久久久久久| 国产欧美精品区一区二区三区 | 国产成人综合在线播放| 亚洲视频在线观看一区| 91精品国产91热久久久做人人| 一级特黄大欧美久久久| 91精品久久久久久久91蜜桃| 国产suv一区二区三区88区| 中文字幕在线一区免费| 91精品国产综合久久小美女| 成人福利视频网站| 日本va欧美va欧美va精品| 国产日韩欧美电影| 国产精品免费丝袜| 欧美日韩国产影片| 波多野结衣在线aⅴ中文字幕不卡| 一区二区成人在线| 国产视频一区不卡| 91精品免费在线观看| 91在线精品一区二区| 国产一区二区三区| 亚洲电影中文字幕在线观看| 激情综合色播五月| 亚洲精品成人悠悠色影视| 欧美激情中文不卡| 久久亚区不卡日本| 日韩精品在线一区| 日韩午夜激情av| 91精品国产入口| 欧美色图片你懂的| 色综合中文字幕国产| 国产成人精品综合在线观看| 美女网站在线免费欧美精品| 亚洲国产综合在线| 亚洲五码中文字幕| 亚洲激情自拍偷拍| 亚洲欧美一区二区在线观看| 久久一二三国产| 精品国产区一区| 精品少妇一区二区三区| 亚洲人妖av一区二区| 久久午夜国产精品| 国产喂奶挤奶一区二区三区| 久久综合九色综合欧美98| 欧美不卡一区二区三区四区| 欧美精品一区二区在线观看| 精品国偷自产国产一区| 久久亚洲一级片| 欧美激情综合五月色丁香| 国产欧美视频一区二区| 国产日韩亚洲欧美综合| 中文字幕av一区二区三区免费看| 国产精品三级av| 一区二区久久久| 美女视频一区二区三区| 免费观看在线综合| 国产麻豆精品在线| 97超碰欧美中文字幕| 91国产免费观看| 欧美一三区三区四区免费在线看| 欧美不卡一二三| 国产精品久久久久久一区二区三区 | 欧美在线高清视频| 欧美卡1卡2卡| 国产午夜精品在线观看| 国产精品国产自产拍在线| 一区二区在线免费观看| 日产国产欧美视频一区精品| 韩国成人福利片在线播放| 成人小视频免费观看| 欧美三级中文字| 久久久午夜电影| 亚洲国产日韩精品| 国产福利一区二区三区在线视频| 色婷婷av一区二区三区大白胸| 制服.丝袜.亚洲.另类.中文| 国产亚洲成av人在线观看导航| 亚洲色大成网站www久久九九| 亚洲第一久久影院| 福利一区在线观看| 欧美日韩精品一区二区三区四区 | 亚洲欧美在线视频| 免费在线观看日韩欧美| 成人免费视频播放| 欧美电影一区二区| 国产欧美一区二区精品性| 亚洲老妇xxxxxx| 国产成人综合在线观看| 欧美日韩色综合| 欧美极品aⅴ影院| 日本不卡的三区四区五区| www.视频一区| 26uuu欧美| 亚洲成人黄色小说| 91偷拍与自偷拍精品| 精品国产一区二区三区久久久蜜月 | 在线观看日韩电影| 日本一区二区电影| 日本va欧美va瓶| 日本乱人伦一区| 国产精品福利电影一区二区三区四区| 免费日韩伦理电影| 91麻豆精品国产91久久久久久久久 | 成人深夜视频在线观看| 日韩一区二区在线观看视频播放 | 中文字幕日韩av资源站| 日本va欧美va瓶| 欧美日韩精品免费| 亚洲综合男人的天堂| 不卡av在线网| 国产欧美一区二区在线观看| 美国欧美日韩国产在线播放| 欧美精品久久天天躁| 亚洲综合一区在线| 色综合久久久久综合99| 国产精品麻豆99久久久久久| 成人自拍视频在线观看| 国产欧美日本一区视频| 国内精品久久久久影院一蜜桃| 日韩你懂的在线观看| 极品少妇xxxx偷拍精品少妇| 久久无码av三级| 高清免费成人av| 中文字幕日本不卡| 一本色道久久综合亚洲aⅴ蜜桃| 综合久久综合久久| 欧洲精品视频在线观看| 一区二区国产视频| 91精品国产综合久久久久| 日本午夜精品视频在线观看 | 欧美韩日一区二区三区| 不卡一区二区三区四区| 亚洲女同ⅹxx女同tv| 在线一区二区三区四区| 丝袜亚洲另类欧美| 26uuu国产日韩综合| 成人久久视频在线观看| 中文字幕综合网| 6080yy午夜一二三区久久| 精品一区二区三区免费视频| 欧美激情一区三区| 日本丶国产丶欧美色综合| 天天av天天翘天天综合网| 精品国产乱码久久| 91丨九色丨尤物| 捆绑调教美女网站视频一区| 国产日韩精品一区二区三区在线| 欧美在线综合视频| 经典三级视频一区| 国产精品国产成人国产三级| 欧美精品色综合| 成人免费看黄yyy456| 亚洲第一电影网| 国产午夜精品一区二区| 精品视频在线免费看| 国产在线播放一区三区四| 亚洲乱码国产乱码精品精98午夜| 日韩精品一区二| 日本电影欧美片| 岛国精品在线观看| 天堂va蜜桃一区二区三区漫画版| 欧美国产1区2区| 欧美成人激情免费网| 91国偷自产一区二区三区成为亚洲经典 | 国产不卡在线播放| 五月天欧美精品| 国产精品久久综合| 日韩欧美第一区| 欧美视频三区在线播放| 国产成人欧美日韩在线电影| 日韩综合小视频| 一区二区三区在线观看欧美| 久久久精品黄色| 日韩欧美电影在线| 欧美一区二区三区男人的天堂| 色婷婷综合久久久中文字幕| 国产精品12区| 国产在线不卡一区| 久久99热国产| 免费欧美日韩国产三级电影| 亚洲风情在线资源站|