if(a[min]>a[j]){
min=j;
}
}
if(min!
=i){
inttem=a[min];
a[min]=a[i];
a[i]=tem;
}
}
Test5t=newTest5();
if(t.binarySearch(a,214)==-1){
System.out.println("没找到!
");
}else{
System.out.println("查找214的下标为:
"+t.binarySearch(a,214));
System.out.println("查找214的下标为:
"+t.binarySearch(a,214)+"次数为"+t.k+"次");
}
}
}
3、异常
①异常也称为例外,在JAVA中所有的异常都是以类的类型存在。
②异常处理
try{
程序代码
}catch(异常类型1异常的变量名1){
程序代码
}catch(异常类型2异常的变量名2){
程序代码
}finally{
程序代码
}
※finally块可以省略,但是如果有的话则一定会执行。
③抛出异常
⑴throw异常类实例对象
⑵方法名称(参数)throw异常类1,异常类2,……
4、递归(可能是阶乘或者费波纳茨序列)
①阶乘
publicstaticdoublefuc(intn)
{
if(n==1)return1;
elsereturnn*fuc(n-1);
}
②费波纳茨序列(也叫兔子数列)
intfun1(intn){intsum=0;if(n<2)return1;for(inti=2;i<=n;i++){sum=fun1(i-2)+fun1(i-1);}returnsum;}
5、链表
链表操作的方法代码
①.插入新节点为次节点
publicvoidinsertNewSecondNode(StringairportCode){
if(length==0)return;//若链表为空,退出
NodenewNode=newNode();//创建新节点newNode
newNode.airport=airportCode;
newNode.link=firstNode.link;//新节点的link指向链表次节点
firstNode.link=newNode;//链表次节点的link指向新节点
length++;
}
②.搜索节点
publicNodelistSearch(StringairportCode){
NodeN;//用作节点指针,指向firstNode
N=firstNode;
while(N!
=null){
if(airportCode.equals(N.airport)){//如果搜索到,则返回N
returnN;
}else{
N=N.link;//指向下一节点
}
}
returnN;//没有搜到,返回null
}
③.删除末节点
publicvoiddeleteLastNode(){
NodepreviousNode,currentNode;
if(firstNode!
=null){//如果链表不为空
if(firstNode.link==null){//如果只有一个节点
firstNode=null;
length--;
}else{//若链表有两个和以上节点
previousNode=firstNode;
currentNode=firstNode.link;
while(currentNode.link!
=null){//循环完后,currentNode指向末节点,previousNode指向倒数第二个节点
previousNode=currentNode;
currentNode=currentNode.link;
}
previousNode.link=null;//删除末节点
length--;
}
}
}
④.插入新节点到末节点
publicvoidinsertNewLastNode(StringairportCode){
NodeN=newNode();
N.airport=airportCode;
N.link=null;
if(firstNode==null){
firstNode=N;
}else{
NodeP=firstNode;
while(P.link!
=null){
P=P.link;
}
P.link=N;
}
length++;
}
⑤.打印链表
publicvoidprint(){
NodeN;
System.out.print("(");
N=firstNode;
while(N!
=null){
System.out.print(N.airport);
N=N.link;
if(N!
=null){
System.out.print(",");
}
}
System.out.println(")");
}