java學習第五天2020/7/10

小強哥in發表於2020-07-10

一.

今天繼續學習演算法;

1.

查詢,一般我們採用的是順序查詢的方法,這種方法是比較簡單,但是效率卻很低;一般就是從第一個數開始與想要查詢的那個數進行比較,當遇到相同的時候則就成功查詢了;

另一種比較高效的方法就是使用二分法;

(1)使用這種方法首先要對元素進行排序;

(2)之後要確定元素的中間位置m;

(3)然後讓要查詢的數於中間的數進行比較,如果中間的數比要查詢的數大,那麼m-1變成最大值,否則讓m+1變成最小值;

在這裡給出一個二分法的例子:

package main函式;
import java.util.Scanner;
public class 二分法 {
	public static void main(String[]args)
	{
		Scanner input = new Scanner(System.in);
		System.out.println("請輸入9個數:");
		int[] m=new int[9];
		for(int i=0;i<9;i++)
		{
			m[i] = input.nextInt();
		}
		int temp;
		for(int i=0;i<m.length-1;i++)
			for(int j=i+1;j<m.length;j++)
			{
				if(m[i]>m[j])
				{
					temp=m[i];
					m[i]=m[j];
					m[j]=temp;
				}
			}
		System.out.println("請輸入要查詢的數:");
		int value=input.nextInt();
		int cout=-1;
		int low=0;
		int high=m.length-1;
		while(low<=high)
		{
			int mid=(low+high)/2;
			if(m[mid]==value)
			{
				cout=mid;
				break;
			}
			else if(m[mid]>value)
			{
				high=mid-1;
			}
			else
			{
				low=mid+1;
			}
		}
		if(cout!=-1)
			System.out.println("下標在:"+cout+"位置");
		else
			System.out.println("沒有找到");
		
	}

}

 

 

2.

java的一些工具類

(1)列印陣列    toStrng方法列印陣列

import java.util.Arrays;

int [] ary={元素.........}

System out.println(Arrays.toString(ary));

 

(2)sort方法排序   //升序

import java.util.Arrays;

import java.util.Arrays;

int [] ary={元素.........}

Arrays.sort(ary);

 

(3)二分查詢

import java.util.Arrays;

binarySearch(int[] args,int key)

int [] ary={元素.........}

Arrays.sort(ary);

int index=Arrays.binarySearch(ary,查詢的數);

 

(4)隨機數

import java.util.Random;

產生隨機數0-99

Random ran=new Random;

int a=ran.nextInt(100);

 

 

(5)輸入

import java.util.Scanner;
Scanner input = new Scanner(System.in);
輸入字串:String name = input.next();
輸入整形:int x = input.nextInt();
輸入浮點型: double x = input.nextDouble();
輸入字元型: char x = input.next().charAt(0);

二.今天沒有遇到什麼新問題

三.明天瞭解java 的物件導向

 

相關文章