注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
- /*这样是可以debug的*/
- package q11_5;
- import java.util.Arrays;
- public class Q11_5{
- public static int searchR(String[] strings,
- String str,int first,int last){
- if(first>last){
-
- return -1;
- }
- int mid=(first+last)/2;
- if(strings[mid].isEmpty()){
- int left=mid-1;
- int right=mid+1;
- while(true){
- if(left<first&&right>last){//through so many manipulations of BS,only '' left in this array
- return -1;
- }else if(right<=last&&!strings[right].isEmpty()){
- mid=right;
- break;
- }else if(left>=first&&!strings[left].isEmpty()){
- mid=left;
- break;
- }
- left--;
- right++;
- }
- }
- /*recursive*/
- if(str.equals(strings[mid])){
- return mid;
- }else if(strings[mid].compareTo(str)<0){//search thr right part
- return searchR(strings,str,mid+1,last);
- }else{
- return searchR(strings,str,first,mid-1);
- }
- }
- public static int search(String[] strings,String str){
- if(strings==null||str==null||str==""){
- return -1;
- }
- return searchR(strings,str,0,strings.length-1);
- }
- public static void main(String[] args) {
- String[] strings={"Tong", "apple",
- "banana", "chaing", "click", "tom"};
- System.out.println(search(strings,"tom"));
- }
- }
- /main函数改为int就不行了*/
- package q11_5;
- import java.util.Arrays;
- public class Q11_5{
- public static int searchR(String[] strings,
- String str,int first,int last){
- if(first>last){
-
- return -1;
- }
- int mid=(first+last)/2;
- if(strings[mid].isEmpty()){
- int left=mid-1;
- int right=mid+1;
- while(true){
- if(left<first&&right>last){//through so many manipulations of BS,only '' left in this array
- return -1;
- }else if(right<=last&&!strings[right].isEmpty()){
- mid=right;
- break;
- }else if(left>=first&&!strings[left].isEmpty()){
- mid=left;
- break;
- }
- left--;
- right++;
- }
- }
- /*recursive*/
- if(str.equals(strings[mid])){
- return mid;
- }else if(strings[mid].compareTo(str)<0){//search thr right part
- return searchR(strings,str,mid+1,last);
- }else{
- return searchR(strings,str,first,mid-1);
- }
- }
- public static int search(String[] strings,String str){
- if(strings==null||str==null||str==""){
- return -1;
- }
- return searchR(strings,str,0,strings.length-1);
- }
- public static int main(String[] args) {
- String[] strings={"Tong", "apple",
- "banana", "chaing", "click", "tom"};
- return search(strings,"chiang");
- }
- }
复制代码 会发现没有java application的选项
|