久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

java二分源代碼 java 二分

用Java語言編寫對整型數(shù)組進行二分查找的程序。

public class BinarySearchDemo {

成都創(chuàng)新互聯(lián)公司是一家集策劃、設計、技術開發(fā)一體的專業(yè)的建站公司,技術團隊十多年來致力于為客戶提供企業(yè)網站定制,成都做手機網站。經過多年發(fā)展,公司技術團隊,先后服務了1000多家客戶,包括各類中小企業(yè)、上市公司、高校、政府。公司在過去十多年的資源積累,追求并一直堅持,為客戶打造更有價值的互聯(lián)網平臺。

public static void main(String[] args) {

int[] a = new int[]{1,5,7,9,11,18,23,48,69};

int point = new BinarySearchDemo().binarySearch(a, 23);

if(point == -1)

System.out.println("在數(shù)組中未查找到數(shù)23");

else

System.out.println("數(shù)字23是數(shù)組中第 " + (point + 1) + " 位數(shù)");

}

/**

* 二分法查找一個整數(shù)在整型數(shù)組中的位置

*

* 算法思路:首先得到數(shù)組a的最小值和最大值的下標,分別是:low和high,接著求出值位于數(shù)組中間那個數(shù)的下標middle

* 然后再將這個middle對應的數(shù)組中的數(shù)和待查找的數(shù)num進行比較,如果相等,則表示已查找到,如果num a[middle]

* 則說明num位于a[low]和a[middle]之間,于是將a[middle - 1]設為較大值,繼續(xù)求出此時對應的a[middle],

* 再進行比較,其他情況可依次類推。一直到low=high,如果此時還沒有在數(shù)組a中查找到,則說明該數(shù)組a中沒有值num,返回-1

*

* @param a 給定的整型數(shù)組

* @param num 待查找的數(shù) num

*

* @return 返回整數(shù)num在數(shù)組a中的位置下標,如果未查找到則返回-1

* */

public int binarySearch(int[] a,int num){

int low = 0;

int high = a.length - 1;

while(low = high){

int middle = (low + high) / 2;

if(num == a[middle])

return middle;

else if(num a[middle])

high = middle - 1;

else

low = middle + 1;

}

return -1;

}

}

程序基本上就是這樣了,其中注釋中有詳細的解釋說明

java泛型 二分查找

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

Student 是基本比較對象類

Dichotomy 是二分法執(zhí)行類

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) {

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

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

return -1;

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

;

} else {

return 1;

}

//不同的執(zhí)行次序決定排序和查找次序不同

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

if(c != 0){

return c;

}

//不同的執(zhí)行次序決定排序和查找次序不同

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 二分查找疑惑

很明顯你不能把middle的賦值語句設在循環(huán)語句的外面,在二分查找算法中,在執(zhí)行一次查找后,middle是需要被重新賦值的,你所說的可以正確查找9只是一種巧合而已,因為第一次循環(huán)就能把9查出來。如果把那條語句放在你注釋的位置,下面的low=high永遠成立,肯定是死循環(huán)。

麻煩高手寫2分查找JAVA代碼

花了我將近一個小時的時間擺弄,你還不舍得給分

第一個類

/**************************************************************************

* 該類為啟動類,運行該類,將跳出輸入數(shù)組對話框,輸入的數(shù)字之間用逗號隔開,若輸入

* 的不是數(shù)字有可能出現(xiàn)異常,請自己處理。輸入的數(shù)字最大個數(shù)為100,也可以修改處理

* 更大個數(shù)的數(shù)組。

**************************************************************************/

package terry.test;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.EventListener;

import java.util.StringTokenizer;

public class InputData extends JFrame implements ActionListener

{

Container con=this.getContentPane();

JButton button1=new JButton("確定");

JButton button2=new JButton("取消");

JLabel label=new JLabel("請輸入數(shù)組:");

JTextField text=new JTextField("數(shù)字之間用逗號隔開");

Panel panel1=new Panel();

Panel panel2=new Panel();

@SuppressWarnings("deprecation")

public InputData()

{

super("輸入有序數(shù)據(jù)對話框");

con.setLayout(new GridLayout(2,1));

panel1.add(label);

panel1.add(text);

con.add(panel1);

button1.addActionListener(this);

panel2.add(button1);

button2.addActionListener(this);

panel2.add(button2);

con.add(panel2);

this.setSize(300,200);

this.show();

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==button1)

{

String dataString=text.getText();//截取寫入的數(shù)組,現(xiàn)在還是一個字符串

ordArray arr=new ordArray(100);//生成排序類的實例;

//以下為處理整個字符串,轉化為整型數(shù)組。

if(dataString!=null)

{

StringTokenizer s=new StringTokenizer(dataString,",");

while(s.hasMoreTokens())

{

int temp=0;

try

{

temp=(new Integer(s.nextToken())).intValue();

}catch(NumberFormatException ex)

{

JOptionPane.showMessageDialog(null, "在數(shù)組中,請輸入整數(shù)值!");

}

arr.insert(temp);

}

}

this.dispose();

new InputSearchApp(arr);

}

}

public static void main(String args[])

{

new InputData();

}

}

第二個類

/**************************************************

* InputData實例向該類的實例傳遞了orderArray參數(shù)變量*

* *

*/

package terry.test;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

public class InputSearchApp extends JFrame implements ActionListener{

Container con=this.getContentPane();

JButton button1=new JButton("確定");

JButton button2=new JButton("取消");

JLabel label=new JLabel("請輸入要查找的數(shù)值:");

JTextField text=new JTextField(10);

ordArray arr=null;

Panel panel1=new Panel();

Panel panel2=new Panel();

public InputSearchApp(ordArray testArray)

{

super("輸入有序數(shù)據(jù)對話框");

arr=testArray;

con.setLayout(new GridLayout(2,1));

panel1.add(label);

panel1.add(text);

con.add(panel1);

button1.addActionListener(this);

panel2.add(button1);

button2.addActionListener(this);

panel2.add(button2);

con.add(panel2);

this.setSize(200,200);

this.show();

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==button1)

{

String dataString=text.getText();

int searchKey= (new Integer(dataString)).intValue();

boolean success=arr.find(searchKey);

if(success)

{

this.dispose();

JOptionPane.showMessageDialog(null, ("查找到數(shù)據(jù)"+searchKey));

}

else

{

JOptionPane.showMessageDialog(null, ("沒有查找到數(shù)據(jù)"+searchKey));

}

}

}

}

第三個類2分查找類

package terry.test;

public class ordArray {

private int[]a;

private int nElems;

public ordArray(int max)

{

a=new int[max];

nElems=0;

}

public int size()

{

return nElems;

}

public boolean find(int searchKey)

{

return recFind(searchKey,0,nElems-1);

}

private boolean recFind(int searchKey,int lowerBound,int upperBound)

{

int curIn,theindex;

//boolean flag=false;

curIn=(lowerBound+upperBound)/2;

if(a[curIn]==searchKey)

theindex=curIn;

else if(lowerBoundupperBound)

theindex=nElems;

else

{

if(a[curIn]searchKey)

return recFind(searchKey,lowerBound,curIn-1);

else

return recFind(searchKey,curIn+1,upperBound);

}

if(theindex!=this.size())

return true;

else

return false;

}

public void insert(int value)

{

int j;

for(j=0;jnElems;j++)

if(a[j]value)

break;

for(int k=nElems;kj;k--)

a[k]=a[k-1];

a[j]=value;

nElems++;

}

}

求一個java的二分查找的程序代碼

//你那程序太難改了,每個方法都單職責啊

public?class?Test6?{

//二分查找

public?static?int?findPos(int[]?a,int?key)?{

int?start=0;

int?end=a.length-1;

int?temp=0;

while(startend){

int?mid=(start+end)/2;

if(keya[mid]){

start=mid+1;

temp=start;

}else?if(keya[mid]){

end=mid-1;

temp=end;

}else?{

return?mid;

}

}

return?temp;

}

public?static?void?main(String[]?args)?{

int[]array={1,4,6,7,10,11,23,78};

System.out.println(findPos(array,?0));

}

}

當前標題:java二分源代碼 java 二分
分享路徑:http://sd-ha.com/article46/doosdeg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計、用戶體驗靜態(tài)網站、App開發(fā)、網站營銷外貿建站

廣告

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

網站優(yōu)化排名