Java递归实现折中算法

发表于:2010-4-12 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
java

public class TestSort<O extends Comparable<O>> {
    private O[] data;
  public TestSort(O[] data)
  {
    this.data = data;
  }

/**
* 递归折中算法
*/
  public int sortByReturn(int low, int high, O value)
  {
      int mid = (low+high)/2;
    if(value.compareTo(data[mid])<0)
    {
      high = mid -1;
      return sortByReturn(low,high,value);
    }else if(value.compareTo(data[mid])>0)
    {
      low = mid + 1;
      return sortByReturn(low,high,value);
    }else
    {
      return mid;
    }
  }

/**
* 循环折中算法
* @param args
*/
  public int sortByWhile(O value)
  {
    if(value==null)
    {
      return 0;
    }
    int low = 0;
    int high = data.length-1;
    int mid ;
    while(low<=high)
    {
      mid = (high+low)/2;
      if(value.compareTo(data[mid])<0)
      {
        high = mid-1;
      }else if(value.compareTo(data[mid])>0)
      {
        low = mid+1;
      }else if(value.compareTo(data[mid])==0)
      {
        return mid;
      }
    }
    return -1;
  }

  public static void main(String[] args)
  {
    Integer data[] = {1,2,5,7,9,33,43,45,66,78,93};
    TestSort<Integer> ts = new TestSort<Integer>(data);
    System.out.println("sort by while:"+ts.sortByWhile(5));
    System.out.println("sort2 by while:"+ts.sortByReturn(0,data.length-1,33));
  }
}

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号