从n个数据中查找一个数

n个数据用一数组a描述,查找对象用x描述。

我们可以将n个数据与查找对象依次比较,可能找到,也可能找不到。这是一种顺序查找的方法,请读者编程实现。

比顺序查找进一步的是折半查找,或称二分查找法。折半查找要求n个数据已排好序,排序的目的就是为了快速查找。假定n个数据已经由小到大排好序。查找到的数据用其下标k描述。是否找到用一标志变量flag描述。

查找问题转化成在区间[O,n一1]找k。先计算其中点d,如果a[d]一x,则k—d;如果a[d]>x,则查找区间缩小为[O,d];如果a[d]<x,则查找区间缩小为[d,n一1]。要么找到,要么查找区间缩小一半,继续折半查找。

程序如下:

float serach(a,n,x)/*折半查找函数*/
float a[],x;
int n:
{int k,flag;
int b=O,e=n一1,d;
flag=O;
do
{d=(b+e)/2;
if(a[d]==x){k=d;flag=1;}
else if(a[d]>x)e=d;
else b=d:
)while(b<e&&!flag);
if(flag==O)k=O;/*没找到*/
return(k);
}

时间: 2024-12-22 16:20:03

从n个数据中查找一个数的相关文章

序列-怎样用sql语言在大型数据中查找查找指定数据的位置

问题描述 怎样用sql语言在大型数据中查找查找指定数据的位置 怎样用sql语言在大型数据中查找查找指定数据的位置 比如我有100万dna数据 从中查找指定ATCGA的序列的位子,用sql可以实现吗? 解决方案 可以实现,但是比较慢. 100万的DNA数据,你是怎么分批或者分组组织的呢?ATCGA只是一条记录的一个片段吗? 你可以用select * from dnaTable where val like '%ATCGA%'; 解决方案二: 可以,一般需要建索引 解决方案三: http://blo

C# winform richtextbox 在窜口接收的数据中 查找指定的字符并高亮

问题描述 {Text="nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:nINaaaa1nT:"}这是RICHTEXTBOX中接收到的值有转行符号n我是要让含有T:这个字符高亮我写了点但是不对,高亮完全不是想要的我想要的效果是像这样的请高手帮忙,谢谢! 解决方案 解决方案二:委托处理字符串显示解决方案三:高亮,就是改

c++双向链表操作示例(创建双向链、双向链表中查找数据、插入数据等)_C 语言

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.一般我们都构造双向循环链表. (1)定义双向链表的基本结构 复制代码 代码如下: typedef struct _DOUBLE_LINK_NODE  {      int data;      struct _DOUBLE_LINK_NODE* prev;      struct _DOUBLE_LINK_NODE* nex

Mysql中查找并删除重复数据的方法

  (一)单个字段 1.查找表中多余的重复记录,根据(question_title)字段来判断  代码如下   select * from questions where question_title in (select question_title from peoplegroup by question_title having count(question_title) > 1) 2.删除表中多余的重复记录,根据(question_title)字段来判断,只留有一个记录  代码如下  

cursor-android在数据库中查找相应的数据时出错。

问题描述 android在数据库中查找相应的数据时出错. Cursor cursor=myDatabase.rawQuery("select ids,title,times from goodtime" , null); cursor.moveToFirst(); while(!cursor.isAfterLast()){ int id=cursor.getInt(cursor.getColumnIndex("ids")); String title=cursor.

JavaScript使用二分查找算法在数组中查找数据的方法_javascript技巧

本文实例讲述了JavaScript使用二分查找算法在数组中查找数据的方法.分享给大家供大家参考.具体分析如下: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一

SQL中查找某几个字段完全一样的数据

有以下一个表 movestar(id,name,title,address),内容为: 现在要查找所有具有相同的title和address的人 复制代码 代码如下:select star1.name,star2.name,star1.title,star1.address from movestar as star1,movestar as star2 where star1.title = star2.title     and star1.address = star2.address   

Excel中查找替换怎么使用

  Excel中查找替换怎么使用         一.快捷方式 Ctrl+F打开"查找和替换"对话框 Ctrl+H打开"查找和替换"对话框. 二.查找范围 查找范围有:全局和局部查找. 如果查找是在整个工作表进行,随意单击任意单元格进行查找.如果是局部查找,首先确定查找范围,比如只在A列查找,可以先选中A列,然后再打开"查找和替换"对话框. 按行按列查找是指优先级. 假如光标当前在A1单元格,A1,A2,B1单元格都包含要查找的数据时,查找结果B

Excel函数实例,在间隔数据中排定名次

用Excel表格做了学生考试成绩汇总表,格式如图1所示.需要根据AA列中相应科目的成绩排出名次,并将结果放到AB列相应的单元格中. 图1 排定名次要使用RANK函数,其语法是"RANK(number,ref,order)"其中,参数"number"是需要找到排位的数字;而参数"ref"则是数字列表的引用;第三个参数如果省略则是按降序排列,这正是我们需要的.比如公式"=RANK(A3,A2:A6)"的意思就是要得到A3单元格数据