真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java二分法代碼名字 Java實現(xiàn)二分法

二分法查找的java代碼

public class ef {

尉犁網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)公司。

public static void main(String[] args) {

int[] a = { 4, 8, 12, 44, 69, 71, 98, 132 ,133};

int m = ef.ef(a, 0, a.length, 71);

if(m!=-1){

System.out.println(a[m]+"====="+m);

}

System.out.println("不存在該數(shù)字");

}

public static int ef(int[] a, int from, int to, int b) {

int midel = (from + to) / 2;

if ((to - from) = 1 b != a[midel]) {

return -1;

}

if (b a[midel]) {

return ef(a, midel, to, b);

} else if (b a[midel]) {

return ef(a, from, midel, b);

} else {

return midel;

}

}

}

java泛型 二分查找

以下代碼是關(guān)于對象的 二分查找 的例子,已經(jīng)測試通過,執(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 不移動

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

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

*/

public int compareTo(Student o) {

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

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 二分法 排序

二分排序就是用先用二分查找法來查某一個元素,然后再用別的排序算法來進行排序。

package insert;

public class InsArrayApp {

public static void main(String[] args) {

int size = 100;

InsArray arr = new InsArray(size);

arr.insert(10);

arr.insert(9);

arr.insert(8);

arr.insert(7);

arr.insert(6);

arr.insert(10);

arr.insert(9);

arr.insert(8);

arr.insert(5);

arr.insert(4);

arr.insert(3);

arr.insert(2);

arr.insert(1);

arr.display();

// arr.insertSort();

// arr.display();

// System.out.println(arr.median());

// arr.noDups();

arr.noDups2();

arr.display();

}

}

class InsArray {

private int[] a;

private int nElems;

public InsArray(int size) {

a = new int[size];

nElems = 0;

}

public void insert(int value) {

a[nElems] = value;

nElems++;

}

public void display() {

for (int i = 0; i nElems; i++) {

System.out.print(a[i] + " ");

}

System.out.println();

}

public void insertSort() {

int out, in;

int copy = 0;

int compare = 0;

/* for(out = 1;outnElems;out++){

int tmp = a[out];

in = out;

while(in0a[in-1]=tmp){

a[in] = a[in-1];

--in;

}

a[in] = tmp;

}*/

for(out = 1;outnElems;out++){

int tmp = a[out];

in = out;

while(in0){

if(a[in-1]=tmp){

a[in] = a[in-1];

--in;

++copy;

++compare;}

else{

break;

}

}

++compare;

a[in] = tmp;

}

System.out.println("copy:" + copy + "compare:" + compare);

}

public int median(){

insertSort();

int m = nElems/2;

return a[m];

}

public void noDups(){

insertSort();

/*

InsArray tmp = new InsArray(nElems);

for(int i = 0;inElems;i++){

for(int j = i+1;jnElems;j++)

if(a[i] == a[j]){

a[j] = -1;

}

if(a[i]!=-1)

tmp.insert(a[i]);

}

*/

InsArray tmp = new InsArray(nElems);

int i;

for(int j = 0;jthis.nElems;j++){

/*if(tmp.nElems==tmp.find(this.a[j])) //binary find

tmp.insert(this.a[j]);

else

continue;*/

for( i = 0; i tmp.nElems; i++) { // for each element

if(tmp.a[i]==this.a[j]) // found searchKey?

break;

}

if(i==tmp.nElems) // no

tmp.insert(this.a[j]);

}

this.a = tmp.a;

this.nElems = tmp.nElems;

}

public int find(long searchKey) {

int lowerBound = 0;

int upperBound = nElems-1;

int curIn;

while(true) {

curIn = (lowerBound + upperBound)/2;

if(a[curIn]==searchKey)

return curIn;

else if(lowerBoundupperBound)

return nElems;

else {

if(a[curIn]searchKey)

upperBound = curIn-1;

else

lowerBound = curIn+1;

}

}

}

public void noDups2(){

insertSort();

for(int i = 0;inElems;i++){

for(int j = i+1;jnElems;j++)

if(a[i] == a[j]){

a[j] = -1;

}

}

display();

int index = 0;

for(int i=0;inElems;i++){

if(a[i]!=-1){

index++;

}else{

for(int j=index+1;jnElems;j++){

if(a[j]!=-1){

a[index] = a[j];

a[j]=-1;

index++;

break;

}

}

}

}

nElems = index;

}

}

上面的代碼,是我以前敲的,有個find()方法是二分查找,然后再用插入排序去進行排序。


網(wǎng)頁題目:java二分法代碼名字 Java實現(xiàn)二分法
文章起源:http://weahome.cn/article/hjihsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部