程序设计算法折半查找

合集下载

C语言程序设计(第三版)谭浩强著 各章习题答疑

C语言程序设计(第三版)谭浩强著 各章习题答疑

6.5
求 ∑k + ∑k
k =1 k =1
100
50
2
1 +∑ k =1 k
10
将m=1放到外层循环之前 m=m*n;
【参看6.4题】 求 ∑k
100 k =1 50
次数型循环(100次)
2
求 ∑k
k =1
次数型循环(50次) 次数型循环(10次)
10
求 ∑1 k
k =1
100
注意:数据类型。
第六章习题答疑(三)
8.8
编函数,输入一个4位正整数,求一个字符串:含有这正整数中的 4个数字字符,且数字字符之间加空格。
例如,正整数是1234,则字符串为”1 2 3 4” ” 传过去:整数n;带回来:数组s[ ] 函数原型:void f(int n,char s[ ]) 功能提示:将n中的4位正整数转换成规定格式的字符串存入数字s[ ]
18
第十章习题答疑(一)
输入3个整数,按照由小到大顺序输出。 int x,y,z,*px=&x,*py=&y,*pz=&x; 用以前的程序,其中的x、y、z换成*px、*py、*pz 10.3 输入10个整数存入一维数组a[10],将其中最小数与第1 个数交换,最大数与最后一个数交换。 要求编3个函数: 10 10 输入10个整数、交换、输出交换后的10个整数。 输入函数: void in(int *p,int n) 输出函数: void out(int *p,int n) 交换函数: void change(int *p,int n) 其中寻找最大最小数的方法: int *q,*max,*min; for (max=min=p,q=p+1;q<p+n;q++) { if(*max<*q) max=q; if(*min>*q) min=q; } 19 交换的方法:*p和*min,*(p+n-1)和*max 10.1

折半查找算法及程序实现教案

折半查找算法及程序实现教案

折半查找算法及程序实现

一、教材分析

教学重点:以图示法方式,演示折半查找算法的基本思想。

教学难点:由折半查找算法的思想到程序代码编写的转换,尤其是其中关键性语句的编写是教学中的难点。

二、学情分析

学生应该已经掌握程序设计的基本思想,掌握赋值语句、选择语句、循环语句的基本用法和VB基本操作,这节课学生可能会遇到的最大问题是:如何归纳总结对分查找解决不同情况问题的一般规律,鉴于此,在教学中要积极引导学生采取分解动作、比较迁移等学习策略.

三、教学目标

知识与技能:理解对分查找的概念和特点,通过分步解析获取对分查找的解题结构,初步掌握对分查找算法的程序实现。

过程与方法:通过分析多种不同的可能情况,逐步归纳对分查找的基本思想和方法,确定解题步骤。

情感态度与价值观:通过实践体验科学解题的重要性,增强效率意识和全局观念,感受对分查找算法的魅力,养成始终坚持、不断积累才能获得成功的意志品质。

四、教学策略与手段

1、教学线索:游戏引领-—-提出对分查找原理—-- 解析对分查找的算法特征-—-实践解决问题。

2、学习线索:分解问题——-归纳问题-——实践提升,在三个阶段的不断推进中明确对分查找算法,总结规律。

五、教学过程

1、新课导入

(1)热身:游戏(2分钟)

找同学上来找一本上千页电话册里面的一个名字。(课程导入我写的不是很详细,自己设计哦)

(2)教师引导:所以我不希望只有他一个人体验这种方便,我们教室里还有一大帮人,其实这种什么不止用于查找电话铺,还可以运用到实际生活中,教室里有这么多人,坦白说,按学校的老方法一个人一个人的数,对所有老师来说都及其费力,那我们想想,是不是数数2368,这样好点对吗?。不要小看这种想法,他其实是非常棒的,他能把解决问题的时间缩短一半,因此我们提出了这种算法

《C程序设计第五版》期末考试改错题

《C程序设计第五版》期末考试改错题

1.以下程序让用户从键盘输入n,计算n!并输出,请改正其中的错误。#include

int main()

{

int n;

int i;

int p;

scanf("%d", n);

for (i = 1; i < n; i ++)

p = p * i;

printf("%d\n",p);

return 0;

}

2.下面程序的功能是将数组元素的倒置,找出其中的错误并改正之。#include "stdio.h"

#define M 5

int main()

{ int a[M]={1,2,3,4,5};

int i,j,t;

i=0;j=M;

while(i < j

{

t=*(a+i);

*(a+i)=*(a+j);

*(a+j)=t;

i++;

j--;

}

for(i=0;i

return 0;

}

正确答案:

#include

#define M 5

int main()

{ int a[M]={1,2,3,4,5};

int i,j,t;

i=0;j=M-1;

while(i < j)

{

t=*(a+i);

*(a+i)=*(a+j);

*(a+j)=t;

i++;

j--;

}

for(i=0;i

return 0;

}

3.下面程序的功能是将数组元素倒置,找出其中的5处错误并改正之。

#include "stdio.h"

#define M 5;

main()

{ int a[M]={1,2,3,4,5};

int i,j,*t;

i=0;j=M-1;

while(i)

{

t=*(a+i);

*(a+i)=*(a+j);

*(a+j)=t;

i++;j++

}

for(i=0;i

数据结构——查找,顺序查找,折半查找

数据结构——查找,顺序查找,折半查找

实验五查找的应用

一、实验目的:

1、掌握各种查找方法及适用场合,并能在解决实际问题时灵活应用。

2、增强上机编程调试能力。

二、问题描述

1.分别利用顺序查找和折半查找方法完成查找。

有序表(3,4,5,7,24,30,42,54,63,72,87,95)

输入示例:

请输入查找元素:52

输出示例:

顺序查找:

第一次比较元素95

第二次比较元素87 ……..

查找成功,i=**/查找失败

折半查找:

第一次比较元素30

第二次比较元素63 …..

2.利用序列(12,7,17,11,16,2,13,9,21,4)建立二叉排序树,并完成指定元素的查

询。

输入输出示例同题1的要求。

三、数据结构设计(选用的数据逻辑结构和存储结构实现形式说明)

(1)逻辑结构设计

顺序查找和折半查找采用线性表的结构,二叉排序树的查找则是建立一棵二叉树,采用的非线性逻辑结构。

(2)存储结构设计

采用顺序存储的结构,开辟一块空间用于存放元素。

(3)存储结构形式说明

分别建立查找关键字,顺序表数据和二叉树数据的结构体进行存储数据

四、算法设计

(1)算法列表(说明各个函数的名称,作用,完成什么操作)

序号 名称 函数表示符 操作说明

1 顺序查找 Search_Seq 在顺序表中顺序查找关键字的数据元素

2 折半查找 Search_Bin 在顺序表中折半查找关键字的数据元素

3 初始化 Init 对顺序表进行初始化,并输入元素

4 树初始化 CreateBST 创建一棵二叉排序树

5 插入 InsertBST 将输入元素插入到二叉排序树中

6 查找 SearchBST

C程序设计的常用算法

C程序设计的常用算法

C程序设计的常用算法

一、计数、求和、求阶乘等简单算法

此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。

例1:求阶乘。下列程序用于求n的阶乘,在累乘之前,一定要将用于存放乘积的变量的值初始化为1;注意阶乘的数字比较大,所以函数类型最好使用长整型。

long func(int n)

{

int i;

long t=1;

for(i=2;i<=n;i++)

t*=i;

return t;

}

例2:整数拆分问题。

(1)确定3位数(2)不确定数字位数,

利用数组存储数字利用变量存储数字数组定义足够大

#define N 3 a,b,c依次保存个十百位viod split(int n, int a[ ])

{int i;

for(i=N-1;n!=0; i--)

{ a[i]=n%10;

n=n/10;

}

}

例3:求整数的因子之和。注意:因子包括1和自身。long factor(int n)

{ int i;

long sum=0;

for(i=1;i<=n;i++)

if(n%i= =0)

sum+=i;

return sum;

}

例4:求回文数的函数(例如:456的回文数是654。)int hws(int a)

{int c=0;

while(a>0)

{ c=c*10+a%10;

a/=10}

return(c);

}

二、求两个整数的最大公约数、最小公倍数

分析:求最大公约数的算法为辗转相除法。(最小公倍数=两个整数之积/最大公约数) 求最大公约数的算法步骤:

(1) 对于已知两数m,n,使得m>n;

raptor折半查找法

raptor折半查找法

Raptor是一个教育性的计算机编程学习工具,用于可视化算法和程序设计。虽然Raptor 通常用于教学和理解算法的工作原理,但它并不是一个实际的编程语言或编译器,因此它不能直接执行代码。然而,您可以使用Raptor来可视化算法的执行过程,包括折半查找法。

以下是使用Raptor可视化折半查找法的一般步骤:

1. 打开Raptor:首先,打开Raptor编程学习工具。

2. 创建一个新程序:在Raptor中创建一个新的程序,以便开始构建折半查找算法。

3. 添加输入:在程序中添加输入,通常是一个有序的数组和要查找的目标元素。您可以使用Raptor的输入操作符(通常是箭头符号)来模拟输入。

4. 初始化变量:创建变量来存储搜索范围的开始和结束索引以及中间索引。初始化这些变量的值,通常开始索引为0,结束索引为数组的长度减1。

5. 创建循环结构:使用循环结构(通常是while循环)来执行折半查找。循环条件通常是开始索引小于等于结束索引。

6. 计算中间索引:在每次迭代中,计算中间索引,通常通过将开始索引和结束索引相加并除以2来实现。

7. 比较中间元素:比较中间索引处的元素与目标元素。如果它们相等,则找到了目标元素,结束搜索。如果中间元素大于目标元素,则将结束索引更新为中间索引-1,否则将开始索引更新为中间索引+1。

8. 重复循环:根据比较的结果,重复步骤6和步骤7,直到找到目标元素或搜索范围缩小为0。

9. 输出结果:在找到目标元素或确定不存在时,输出搜索的结果。

10. 结束程序:完成折半查找的过程后,结束程序。

折半查找算法实现(C++)

折半查找算法实现(C++)

//此程序是折半查找的详细算法实现

#include

using namespace std;

void CreateData(int data[],int length);//为一个数组赋值

//此函数是折半查找函数。其中data是所查寻的数组,length是数组的长度。x是所要查找的数,返回的值是数据x在数组中的位置

int Bisearch(int data[],int x,int begin,int last);//折半查找函数,使用过程中只需要给出数组名字,要查找的数值x,数组的起始位置begin及莫位置即可。

void PrintData(int data[],int length);//输出一个数组的所有元素。

void main()

{

//声明一个数组data[10],并调用CreateData()函数为该数组赋值。

int data[10];

CreateData(data,10);

//调用PrintData()函数输出data的值。

PrintData(data,10);

loop:

//定义一个整形变量用于接收用于要查找的数值,并提示用于输入该值

int x;

cout<<"请输入你要查找的值:";

cin>>x;

system("cls");

PrintData(data,10);

//调用函数Bisearch()函数查找用于输入的x在数组中的元素。

int loaction = Bisearch(data,x,0,9);

//首先判断是否查找成功

if( loaction == -1)

{

cout<<"查找失败,没有你要查找的值"<

编程实现折半查找算法。

编程实现折半查找算法。

编程实现折半查找算法。

中括号内的内容为主题:编程实现折半查找算法

一、介绍

折半查找算法,也被称为二分查找算法,是一种高效的查找算法。它可以在有序的数据集合中查找特定元素的位置,其时间复杂度为O(log n)。本文将带你一步一步了解并编程实现折半查找算法。

二、算法思想

1. 确定查找区间的起始和结束位置。

2. 计算区间的中间位置。

3. 如果中间位置的元素等于目标元素,则查找成功返回该位置。

4. 如果中间位置的元素大于目标元素,则在前半部分继续查找。

5. 如果中间位置的元素小于目标元素,则在后半部分继续查找。

6. 重复步骤2-5,直到找到目标元素或者区间为空。

三、代码实现

下面是使用Python语言实现折半查找算法的代码:

python

def binary_search(arr, target):

low = 0

high = len(arr) - 1

while low <= high:

mid = (low + high) 2

guess = arr[mid]

if guess == target:

return mid

elif guess > target:

high = mid - 1

else:

low = mid + 1

return -1

代码说明:

1. 函数`binary_search`接受一个有序数组`arr`和目标元素

`target`作为参数。

2. 初始化变量`low`为区间左端的索引,`high`为区间右端的索引。

3. 使用`while`循环在区间内进行查找,直到找到目标元素或者区间为空。

C语言程序设计的常用算法

C语言程序设计的常用算法
C 语言程序设计的常用算法
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个 问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输 出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、 结构化流程图、伪代码等来描述算法。
c[ic]=a[ia]; ia++; } else { c[ic]=b[ib]; ib++; } ic++; } while(ia<=9) { c[ic]=a[ia]; ia++; ic++; } while(ib<=9) { c[ic]=b[ib]; ib++; ic++;
} for(i=0;i<20;i++)
/////////////////////////////////////////////////////////////////////////////// void main() {
int a[N]; int i,j,t; printf("input 10 numbers:"); for(i=0;i<N;i++)
scanf("%d",&a[i]); printf("please input the second array:"); for(i=0;i<10;i++)

折半查找算法及程序实现教案

折半查找算法及程序实现教案

折半查找算法及程序实现教案

教案:折半查找算法及程序实现

一、教学目标

1.了解折半查找算法的原理和流程;

2.掌握折半查找算法的程序实现;

3.能够分析和评估折半查找算法的时间复杂度。

二、教学内容

1.折半查找算法的原理和流程;

2.折半查找算法的程序实现;

3.折半查找算法的时间复杂度分析。

三、教学过程

1.导入,引入折半查找算法的背景和应用场景。(5分钟)

2.讲解折半查找算法的原理和流程。(10分钟)

折半查找算法,也称为二分查找算法,是一种分治思想的算法。其运行时要求待查找数据必须是有序的。基本思想是将待查找的数据与中间位置的数据进行比较,若相等则查找成功,若不相等则根据大小关系在前半部分或后半部分查找,如此不断缩小查找范围,直到找到目标元素或查找范围为空。

1)取查找范围的首尾元素确定中间位置元素,并与目标元素进行比较;

2)若中间位置元素与目标元素相等,则查找成功,返回中间位置;

3)若中间位置元素大于目标元素,则在前半部分继续查找,重复步

骤1);

4)若中间位置元素小于目标元素,则在后半部分继续查找,重复步

骤1);

5)若找到目标元素,则返回其位置,否则返回查找失败。

3.分组讨论与实践。(15分钟)

将学生分成若干小组,让每个小组分别完成以下任务:

-根据讲解的折半查找算法原理,结合自己的理解,用自然语言描述

折半查找算法;

-编写折半查找算法的递归实现;

-编写折半查找算法的非递归实现;

-利用给定的有序数组,测试实现的算法是否正确。

4.小组展示与讨论。(15分钟)

每个小组派代表上台展示他们的实现,并陈述实现的思路和步骤。其

c语言使用折半查找法的示例代码

c语言使用折半查找法的示例代码

c语言使用折半查找法的示例代码

C语言使用折半查找法的示例代码

1. 引言

折半查找法(Binary Search)是一种常用的查找算法,它通过将有序数组分成两半的方式快速定位要查找的元素。在本文中,我们将探讨C语言中如何实现折半查找的算法,并提供一个示例代码来演示其实际应用。

2. 算法思路

折半查找法的基本思路是不断将查找范围缩小为一半,直到找到目标元素或者确认目标元素不存在。以下是该算法的详细步骤:

- 确定查找范围的起始位置(通常是数组的起始位置)和结束位置(通常是数组的末尾位置)。

- 计算查找范围的中间位置,并取得该位置上的元素。

- 如果中间元素等于目标元素,则查找成功,并返回该元素的位置。 - 如果中间元素大于目标元素,则将查找范围缩小为数组起始位置到中间位置-1的一半。

- 如果中间元素小于目标元素,则将查找范围缩小为中间位置+1到数组末尾位置的一半。

- 重复以上步骤,直到找到目标元素或者确认目标元素不存在。

3. 示例代码

下面是一个使用C语言实现折半查找法的示例代码:

```c

#include <stdio.h>

int binarySearch(int arr[], int low, int high, int target) { while (low <= high) {

int mid = low + (high - low) / 2;

if (arr[mid] == target) {

return mid;

}

else if (arr[mid] < target) {

VB程序设计的常用算法

VB程序设计的常用算法

VB程序设计的常用算法

算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。

一、计数、求和、求阶乘等简单算法

此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。

例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。

本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,……个位是0的个数存放在x(10)。

将程序编写在一个GetTJput过程中,代码如下:

Public Sub GetTJput()

Dim a(1 To 100) As Integer

Dim x(1 To 10) As Integer

Dim i As Integer, p As Integer

'产生100个[0,99]范围内的随机整数,每行10个打印出来

For i = 1 To 100

a(i) = Int(Rnd * 100)

If a(i) < 10 Then

Form1.Print Space(2); a(i);

折半查找的递归算法

折半查找的递归算法

折半查找的递归算法

1. 介绍

折半查找,也称为二分查找,是一种在有序数组中查找目标值的常用算法。它的时间复杂度为O(logN),相比于线性查找的O(N)效率更高。折半查找的核心思想是每次将查找范围缩小一半,直到找到目标值或者确认目标值不存在。

2. 算法原理

折半查找算法的原理非常简单,基本思路如下: 1. 确定查找范围的起始位置(一般为数组的首尾元素)。 2. 计算范围的中间位置。 3. 判断中间位置的元素与目标值的关系: - 如果中间元素等于目标值,查找成功。 - 如果中间元素大于目标值,缩小查找范围至左侧一半,回到第2步。 - 如果中间元素小于目标值,缩小

查找范围至右侧一半,回到第2步。 4. 重复步骤2和3,直到找到目标值或者确

认目标值不存在。

3. 递归实现

折半查找可以使用递归的方式实现,递归版本的算法如下:

def binary_search_recursive(arr, target, left, right):

if left > right:

return -1

mid = (left + right) // 2

if arr[mid] == target:

return mid

if arr[mid] > target:

return binary_search_recursive(arr, target, left, mid - 1) else:

return binary_search_recursive(arr, target, mid + 1, right)

在递归版本的算法中,参数arr是要进行查找的有序数组,target是目标值,left

大学Python程序题题库

大学Python程序题题库

程序设计

题目:增补fun 函数,其功能是判断一个整数是不是素数,在主函数 main 中输入一个整数,调用该fun 函数进行判断并输

出结果。

要求:使用math 有关函数

import math

def fun(n):

i,w=2,0

if n<=1:

w=1

while i<=int(n)) and w==0:

if n%i==0:

w=1

break

else:

i=i+1

return w

def main():

print("【请连续四次判断输入的整数是不是素数:】")

for i in range(4):

print("【第 %d次:】 " %(i+1))

n=int(input('【请输入一个整数n:】'))

if fun (n)==0:

print("%d是素数" %n)

else:

print("%d不是素数" %n)

if __name__ == '__main__':

main()

题目:求100- 999 之间的水仙花数

说明:水仙花数是指一个三位数的各位数字的立方和是这个数自己。

比如: 153= 1^3+ 5^3+ 3^3 )。

---------------------------------------------------------

注意:除要求填空的地点以外,请勿变动程序中的其余内容。

------------------------------------------------------'''

def main():

for i in range(100,1000):

h= iormat(x,x**2))

折半查找的实验报告

折半查找的实验报告

折半查找的实验报告

《折半查找的实验报告》

在计算机科学领域中,折半查找是一种常用的搜索算法,也被称为二分查找。

它的原理是在有序数组中查找特定元素的位置,通过将数组分成两部分并逐步

缩小搜索范围来实现。本实验旨在验证折半查找算法的效率和准确性,以及探

讨其在实际应用中的优势和局限性。

实验过程分为以下几个步骤:

1. 数据准备:首先,我们准备了多组有序数组作为输入数据,每组数组包含不

同数量的元素。这些数组涵盖了各种规模的数据集,以便全面测试折半查找算

法的性能。

2. 算法实现:我们编写了折半查找算法的实现代码,并在不同规模的数据集上

进行了测试。算法的实现包括了边界条件的处理、搜索范围的缩小和结果的返

回等关键步骤。

3. 实验设计:为了验证折半查找算法的准确性和效率,我们设计了一系列实验,包括查找存在的元素、查找不存在的元素以及对比折半查找和线性查找算法的

性能。

4. 实验结果:通过对实验数据的分析和对比,我们得出了折半查找算法在不同

规模数据集上的搜索耗时和准确率。同时,我们也探讨了折半查找算法相对于

线性查找算法的优势和局限性。

5. 结论与展望:最后,我们总结了实验结果,并对折半查找算法在实际应用中

的潜在价值和改进方向进行了展望。

通过本次实验,我们对折半查找算法有了更深入的理解,同时也为其在实际应

用中的优化和推广提供了一些思路。希望本实验报告能够对相关领域的研究和应用有所启发,为进一步探索折半查找算法的性能和潜力提供参考。

程序设计基础(C语言)第8章 查找和排序算法

程序设计基础(C语言)第8章 查找和排序算法

n = ReadRecord(num, weight);
printf("Total satellites are %d\n",
n);
printf("Input the searching ID:");
scanf("%d", &key);
pos = LinSearch(num, key, n);
if (pos != -1)
8.2.1二分查找算法的基本原理
要求数据表有序
先将表的中间位置记录的关键字与查找关键字比较
如果两者相等,则查找成功 否则将表分成前、后两个子表,根据比较结果,决定查找哪个子表
8.2.2二分查找算法的递归和迭代实现
• 【例8.2】将例8.1程序改为用二分查找算法实现,假设卫星的数据记录是以按编号升
8.1.1线性查找算法的基本原理
优点是简单直观,不要求数据表有序
依次将记录的关键字与查找关键字(key )进行比较
在最坏情况下,即查找关键字位于所有 数据的尾部且数据量较大时,或者已知 数据中不存在该值时,查找次数将等于 总数据量的大小。在最好情况(数据在 第一个位置)下,只需查找一次。从平 均情况来看,需要与一半的数组元素与 查找关键字进行比较。
第7章 算法和数据结构基础
——查找和排序算法
8.1 线性查找算法——众里寻他千百度
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Input to x
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
L=1 R=10 Zj=int((L+R)/2) if x=a(zj) ?'yes',zj exit
input to x
1 2 4 5
R
input to x L=1
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
R=10 L<=R do while ________ Zj=int((L+R)/2) if x=a(zj) ?'yes',zj exit else if x<a(zj) R=zj-1 else L=zj+1 endif endif enddo
R
input to x
1 2 4 5 6
L=1
9
10
L
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
R=10 Zj=int((L+R)/2) if x=a(zj) ?'yes',zj exit else if x<a(zj) R=zj-1 else L=zj+1 endif endif
Input to x
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
Input to x
1
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 2 存在返回“ yes” 和该数在数组中的 位置
总结
VF程序设计基础
折半查找
制作人:石家庄市第十一中学 赵琳娜
0
500
999
折 半 查 找
先给出一个商品 然后你给出价格 然后主持人会根据你所出的价格 来判断是高于实际价格还是低于 实际价格 并提示是"高了"还是"低了" 直到你猜对价格 每件商品的价格都在0-999元之间 时间限制 当然是有时间限制的哈
L=1
9
10
L
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
R=10 Zj=int((L+R)/2) if x=a(zj) ?'yes',zj exit else if x<a(zj) R=zj-1
一个数组 a有10 个元素,已经 按升序排列好 。输入一个数, 判断该数是否在数组中,不在 返回“no”,存在返回“yes” 和该数在数组中的位置
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
折半查找 算 法
Байду номын сангаас
input to x L=1 R=10 do while L<=R Zj=int((L+R)/2) if x=a(zj) ?'yes',zj exit else if x<a(zj) R=zj-1 else L=zj+1 endif endif enddo if L>R ?'NO' endif
L=1 R=10 Zj=int((L+R)/2)
5
9
10
L
R
Input to x
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
L=1 R=10 Zj=int((L+R)/2) if x=a(zj)
input to x L=1
一个数组 a有10 个元素,已经按升 序排列好 。输入 一个数,判断该数 是否在数组中,不 在返回“no”, 存在返回“yes” 和该数在数组中的 位置
R=10 do while L<=R Zj=int((L+R)/2) if x=a(zj) ?'yes',zj exit else if x<a(zj) R=zj-1 else L=zj+1 endif endif enddo if L>R ?'NO' endif
相关文档
最新文档