`
- 浏览:
31210 次
- 性别:
- 来自:
北京
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- class OrdArray {
-
- private long[] a;
- private int nElems;
-
- public OrdArray(int max) {
- a = new long[max];
- nElems = 0;
- }
-
- public int size() {
- return nElems;
- }
-
- public int find(long searchKey) {
- return recFind(searchKey, 0, nElems - 1);
-
- }
-
- public int recFind(long searchKey, int lowerBound, int upperBound) {
- int curIn = (lowerBound + upperBound) / 2;
- if (a[curIn] == searchKey) {
- return curIn;
- } else if (lowerBound > upperBound) {
- return nElems;
- } else {
- if (a[curIn] < searchKey) {
- return recFind(searchKey, curIn + 1, upperBound);
- } else {
- return recFind(searchKey, lowerBound, curIn - 1);
- }
- }
- }
- public int recFind2(long searchKey, int lowerBound, int upperBound){
- int curIn=0;
-
- while(true){
- curIn=(lowerBound+upperBound)/2;
- if(a[curIn]==searchKey)
- return curIn;
- else if(lowerBound>upperBound)
- return nElems;
- else{
- if(a[curIn]<searchKey){
- lowerBound=curIn+1;
- }
- else{
- upperBound=curIn-1;
- }
- }
- }
- }
- public void insert(long value){
- int j;
- for(j=0; j<nElems; j++)
- if(a[j]>value)
- break;
- for(int k=nElems; k>j; k--)
- a[k]=a[k-1];
- a[j]=value;
- nElems++;
- }
- public void display(){
- for(int j=0; j<nElems; j++){
- System.out.println(a[j]+"");
- }
- }
- }
- class BinarySearchApp{
- public static void main(String[] args){
- int maxSize=100;
- OrdArray arr=new OrdArray(maxSize);
-
- arr.insert(72);
- arr.insert(90);
- arr.insert(45);
- arr.insert(126);
- arr.insert(54);
- arr.insert(99);
- arr.insert(144);
- arr.insert(27);
- arr.insert(135);
- arr.insert(81);
- arr.insert(18);
- arr.insert(100);
- arr.insert(9);
- arr.insert(117);
- arr.insert(63);
- arr.insert(36);
- arr.display();
-
- int searchKey=100;
- if(arr.find(searchKey) !=arr.size())
- System.out.println("Found "+searchKey);
- else
- System.out.println("Can't find "+ searchKey);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
递归算法2,正如其名,是递归思想在易语言中的具体应用实例,而辗转相除法(也称欧几里得算法)则是递归算法2的一个典型应用场景。 辗转相除法,源于古希腊数学家欧几里得提出的求最大公约数的方法。该算法基于这样...
易语言源码中的递归算法2可能涉及到以下几个方面: 1. **基本概念**:首先,理解递归的基本概念至关重要。递归包含两个主要部分:基本情况(Base Case)和递归情况(Recursive Case)。基本情况是指可以直接求解的...
递归算法和非递归算法 在计算机科学与编程领域中,递归算法与非递归算法是两种非常重要的计算方法。本文将详细介绍这两种算法的特点、应用场景以及如何实现它们,特别针对初学者及面试准备者。 #### 递归算法 ...
在VC++(Visual C++)环境中,有多种方法可以实现这一目标,其中最常见的是递归算法和非递归算法。这两种方法各有优缺点,适用于不同的场景。 **递归算法**: 递归算法是一种基于函数自身调用解决问题的方法。在...
在.NET编程环境中,递归算法是一种强大的工具,它允许函数或方法调用自身来解决复杂问题。递归的核心思想是将大问题分解为相同或相似的小问题,直到问题变得足够简单,可以直接得出答案。这种解决问题的方式在数据...
2. **基本原理**:递归算法通常包括两个部分:递归规则(如何将大问题分解为小问题)和终止条件(何时停止递归)。递归规则描述了如何将问题规模减小,而终止条件确保递归不会无限进行下去。 3. **类型**:递归可以...
### ABAP简单递归算法解析 #### 一、引言 ABAP(Advanced Business Application Programming)是一种用于SAP系统的编程语言。它不仅支持传统的过程化编程,还支持面向对象编程和Web开发。本文将深入探讨一个ABAP中...
对于解决汉诺塔问题,传统方法是通过递归算法实现,即通过不断将问题规模缩小,直到简化到最基本的情况,然后逐步返回并解决每一层的子问题。然而,递归算法在处理大量圆盘时容易引起调用栈过深,导致效率低下。因此...
快速排序算法设计与分析总结 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现 实现树与...
18.递归算法与递归算法应用.ppt
7. 递归算法和循环算法在斐波那契数列计算中的应用:递归算法的时间复杂度为 O(2^n),循环算法的时间复杂度为 O(n)。 8. 递归算法和循环算法在二分查找算法中的应用:递归算法和循环算法的时间复杂度都为 O(logn),...
2. **执行效率**:递归算法在某些情况下可能导致大量的函数调用,这在效率上可能不如非递归算法。非递归算法通常更直接,没有递归调用的开销。 3. **可读性和实现难度**:递归算法通常代码简洁,易于理解,而非递归...
"递归算法ppt让你快速上手" 递归算法是计算机科学中的一种重要算法思想,它可以解决许多复杂的问题。下面是递归算法的知识点总结: 1. 递归的定义:若一个对象部分地包含它自己,或用它自己给自己定义,则称这个...
### 递归算法专题知识点详解 #### 一、递归算法原理 递归算法是一种将问题分解成子问题的方法,其中子问题与原问题性质相同但规模较小。递归算法的关键在于识别出能够通过递归解决的问题,并找到递归的基本情况...
### 递归算法在程序设计中的应用 #### 一、递归的概念与本质 递归是一种重要的编程思想,在计算机科学和数学领域都有广泛的应用。它指的是一个过程或函数直接或间接地调用自身来解决问题的方法。递归的核心在于将...
递归算法转为非递归算法。方法、过程,用栈的原理
递归算法是一种强大的编程技术,它通过函数或过程在解决问题时调用自身来解决更小规模的相同问题。递归的基本概念在于一个函数在定义中包含对自身的引用,或者问题的解决方案依赖于较小规模问题的解决方案。在程序...
### Hanoi塔问题的一种非递归算法:深入解析与实现 #### 一、引言 Hanoi塔问题作为计算机科学领域内经典的递归问题之一,因其简洁性和挑战性而广受关注。通常,Hanoi塔问题的解决方案多采用递归算法,尽管其逻辑...
在这个主题中,我们将深入探讨如何使用递归算法在VB6.0(Visual Basic 6.0)中计算阶乘。VB6.0是Microsoft开发的一款经典可视化编程环境,用于创建Windows应用程序。 阶乘是一个数学概念,表示一个正整数n的所有...