1.使用二分搜索算法查找任意N個有序數(shù)列中的指定元素。
2.通過上機實驗進行算法實現(xiàn)。
3.保存和打印出程序的運行結果,并結合程序進行分析,上交實驗報告。
4.至少使用兩種方法進行編程,直接查找/遞歸查找/迭代查找。
package algorithm;
import javax.swing.*;
import java.util.*;
public class Test1 {//直接查找static int binary_search(int n,int a[]){int m=-1;for(int i=0 ; i<a.length ; i++){if(a[i]==n){m=i;break;}}if(m==-1)return -1;elsereturn m;}//遞歸查找static int binary_search1(int n,int a[],int low,int high){if(n<a[low] || n>a[high] || high<=low)return -1;int mid=(low+high)/2;if(n>a[mid])return binary_search1(n,a,mid+1,high);else if(n<a[mid])return binary_search1(n,a,low,mid+1);elsereturn mid;}//迭代查找static int binary_search2(int n,int a[]){int low,high,mid,m;m=-1;low=0;high=a.length-1;while(low<=high) {mid=(low+high)/2;if(n<a[mid])high=mid-1;else if(n>a[mid])low=mid+1;else if(n==a[mid]){m=mid;break;}}if(m==-1)return -1;elsereturn m;}public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("請輸入個數(shù):");int n=in.nextInt();int[] a=new int[n];System.out.println("請輸入"+n+"個數(shù)據(jù):");for(int i=0;i<n;i++){a[i]=in.nextInt();}Arrays.sort(a);System.out.println("請輸入要查到的數(shù)據(jù):");int m=in.nextInt();int l;System.out.println("直接查找:");l=binary_search(m,a)+1;if(l==0)System.out.println("不存在!1");elseSystem.out.println("位置在第"+l+"個");System.out.println("遞歸查找:");int low=0;int high=n-1;l=binary_search1(m,a,low,high)+1;if(l==0)System.out.println("不存在!");elseSystem.out.println("位置在第"+l+"個");System.out.println("迭代查找:");l=binary_search2(m,a)+1;if(l==0)System.out.println("不存在!");elseSystem.out.println("位置在第"+l+"個");}
}
總結
以上是生活随笔為你收集整理的Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。