java经典代码
来源:互联网 发布:windows 远程连接 mac 编辑:程序博客网 时间:2024/05/19 00:52
二分法查找示例
成员类:
package com.junglesong;
public class Member implements Comparable{
private String name;
private int age;
public Member(String name,int age){
this.name=name;
this.age=age;
}
/** *//**
* 实现成员比较
*/
public int compareTo(Object obj){
Member another=(Member)obj;
return this.name.compareTo(another.name);
}
/** *//**
* 实现成员相等运算
*/
public boolean equals(Object obj){
Member another=(Member)obj;
return this.name.equals(another.name);
}
public String toString(){
return "名="+name+" 年龄="+age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
二分查找类:
package com.junglesong;
import java.util.ArrayList;
import java.util.List;
/** *//**
* 二分查找示例二(对链表进行查找)
* @author: sitinspring(junglesong@gmail.com)
* @date: 2008-3-8
*/
public class BinSearch2{
public static void main(String[] args){
// 欲查找的链表
List<Member> members=new ArrayList<Member>();
members.add(new Member("Andy",21));
members.add(new Member("Bill",22));
members.add(new Member("Cindy",23));
members.add(new Member("Douglas",24));
members.add(new Member("Felex",25));
members.add(new Member("Green",26));
// 测试链表
List<Member> tempList=new ArrayList<Member>();
tempList.add(new Member("Bill",22));
tempList.add(new Member("Cindy",23));
tempList.add(new Member("Douglas",24));
tempList.add(new Member("Felex",25));
tempList.add(new Member("Hill",26));
for(Member member:tempList){
System.out.println("成员"+member+"的下标为"+binSearch(members,member));
}
}
/** *//**
* 二分查找
* @param sortedArray 已排序的欲查找的链表
* @param seachValue 查找的值
* @return 找到的元素下标,若找不到则返回-1
*/
public static int binSearch(List<Member> sortedList,Member seachValue){
// 左边界
int leftBound=0;
// 右边界
int rightBound=sortedList.size()-1;
// 当前下标位置
int curr;
while(true){
// 定位在左边界和右边界中间
curr=(leftBound+rightBound)/2;
if(sortedList.get(curr).equals(seachValue)){
// 找到值
return curr;
}
else if(leftBound>rightBound){
// 左边界大于右边界,已经找不到值
return -1;
}
else{
if(sortedList.get(curr).compareTo(seachValue)<0){
// 当当前下标对应的值小于查找的值时,缩短左边界
leftBound=curr+1;
}
else{
// 当当前下标对应的值大于查找的值时,缩短右边界
rightBound=curr-1;
}
}
}
}
}
- java经典代码
- java经典实例代码
- java io经典代码
- Java经典代码
- Java - 经典代码题
- Java经典实例代码
- 经典java代码找错题
- 常用经典java代码集锦
- Java经典代码-冒泡排序
- Java NIO 经典实例代码
- Java NIO 经典实例代码
- 【Java】Java代码经典错误清单
- 14 个经典的Java script 代码
- Java经典代码(配置文件的积累。。。)
- Java经典代码(配置文件的积累。。。 .
- Java I/O经典代码实例
- java代码验证身份证号码经典版
- JAVA面试:经典代码查错题
- 用例图
- 黑马程序员—ADO.Net基础篇3类型化DataSet
- asp.net会员注册与登陆
- Spring 学习手札(三)BeanFactory与ApplicationContext的区别
- javascript的一点笔记
- java经典代码
- struts2表单提交action路径传参数不成功
- Linux下的Socket基础编程(来自Unix网络编程)
- RSync
- 黑马程序员—SQL复习篇
- WIN7 安装VC6.0
- 数据结构学习(三)——单链表的操作之查找、删除、插入。
- 黑马程序员—ASP.net中多线程
- POJ 1256 Anagram