日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

递归算法和迭代算法_Java中没有递归的二进制搜索–迭代算法

發布時間:2023/12/3 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归算法和迭代算法_Java中没有递归的二进制搜索–迭代算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遞歸算法和迭代算法

這周的任務是用Java實現二進制搜索 ,您需要編寫迭代和遞歸二進制搜索算法 。 在計算機科學中,二進制搜索或半間隔搜索是一種分而治之的算法,用于在排序數組中定位項目的位置。 二進制搜索通過將輸入值與數組的中間元素進行比較來工作。 比較確定元素是否等于輸入,小于輸入或大于輸入。 當要比較的元素等于輸入時,搜索將停止并通常返回該元素的位置。 如果元素不等于輸入,則進行比較以確定輸入是否小于或大于元素。 然后,根據算法的不同,算法重新開始,但僅搜索數組元素的頂部或底部子集。 如果輸入不在數組內,則算法通常會輸出一個唯一的值來表明這一點。

二進制搜索算法通常將每次連續迭代要檢查的項目數量減半,從而在對數時間內定位給定的項目(或確定其不存在)。 二進制搜索是一種分而治之的搜索算法。 它通過將輸入集分成兩半然后應用算法并重復相同的步驟直到完成工作來工作。

Java中的二進制搜索實現

該算法是遞歸實現的。 另外,有關Java中的二進制搜索實現的一個有趣的事實是,著名的作者Joshua Bloch
有效的Java書籍在“ java.util.Arrays”中編寫了二進制搜索。

import java.util.Arrays; import java.util.Scanner;/** * Java program to implement Binary Search. We have implemented Iterative * version of Binary Search Algorithm in Java * * @author Javin Paul */ public class IterativeBinarySearch {public static void main(String args[]) {int[] list = new int[]{23, 43, 31, 12};int number = 12;Arrays.sort(list);System.out.printf("Binary Search %d in integer array %s %n", number,Arrays.toString(list));binarySearch(list, 12);System.out.printf("Binary Search %d in integer array %s %n", 43, Arrays.toString(list));binarySearch(list, 43);list = new int[]{123, 243, 331, 1298};number = 331;Arrays.sort(list);System.out.printf("Binary Search %d in integer array %s %n", number, Arrays.toString(list));binarySearch(list, 331);System.out.printf("Binary Search %d in integer array %s %n", 331, Arrays.toString(list));binarySearch(list, 1333);// Using Core Java API and Collection framework// Precondition to the Arrays.binarySearchArrays.sort(list);// Search an elementint index = Arrays.binarySearch(list, 3);}/*** Perform a binary Search in Sorted Array in Java** @param input* @param number* @return location of element in array*/public static void binarySearch(int[] input, int number) {int first = 0;int last = input.length - 1;int middle = (first + last) / 2;while (first <= last) {if (input[middle] < number) {first = middle + 1;} else if (input[middle] == number) {System.out.printf(number + " found at location %d %n", middle);break;} else {last = middle - 1;}middle = (first + last) / 2;}if (first > last) {System.out.println(number + " is not present in the list.\n");}} }Output Binary Search 12 in integer array [12, 23, 31, 43] 12 found at location 0 Binary Search 43 in integer array [12, 23, 31, 43] 43 found at location 3 Binary Search 331 in integer array [123, 243, 331, 1298] 331 found at location 2 Binary Search 331 in integer array [123, 243, 331, 1298] 1333 is not present in the list.

這就是如何在Java中實現迭代二進制搜索的全部內容。

感謝您到目前為止閱讀本文。 如果您喜歡這篇文章,請與您的朋友和同事分享。 如果您有任何疑問或反饋,請留言。

翻譯自: https://www.javacodegeeks.com/2018/06/binary-search-java-without-recursion.html

遞歸算法和迭代算法

總結

以上是生活随笔為你收集整理的递归算法和迭代算法_Java中没有递归的二进制搜索–迭代算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。