顺序查找                                                            

算法描述

顺序比较即可。

平均查找长度

(n+1)/2, 其中n为表长。

时间复杂度

O(n)

#include "stdio.h"
typedef struct student{
int id; /*学生编号*/
char name[]; /*学生姓名*/
float score; /*成绩*/
}Student; int search(Student stu[],int n,int key){
int i;
for(i=; i<n; i++)
if( stu[i].id == key ) /*查找成功*/
return i;
return -; /*查找失败*/ }
void main()
{
Student stu[] = {{,"TOM",} ,
{,"LILY",},
{,"ANN",},
{,"LUCY",}
}; /*初始化结构体数组*/
int addr; /*要查找的记录的地址*/
addr = search(stu,,);
printf("Student ID: %d\n",stu[addr].id); /*输出查找到的记录的信息*/
printf("Student name: %s\n",stu[addr].name);
printf("Student score: %f\n",stu[addr].score);
}

折半查找                                                            

算法描述

限制:待查表必须是有序的向量(在内存中连续存储)

首先和数组中点比较,如果等于则返回,如果小于中点则在左边区间查找,如果大于中点则在右边区间查找。

平均查找长度

lg(n+1)

#include "stdio.h"
bin_search(int A[],int n,int key){
int low,high,mid;
low = ;
high = n-;//因为从0开始,所以减1
while(low<=high)
{
mid = (low + high)/;//从中间开始找,先找出中间的数为多少
if(A[mid]==key)return mid; /*查找成功,返回mid*/
if(A[mid]<key){
low = mid + ; /*在后半序列中查找*/
}
if(A[mid]>key){
high = mid - ; /*在前半序列中查找*/
}
}
return -; /*查找失败,返回-1*/
}
main()
{
int A[] = {,,,,,,,,,},i,n ,addr;
printf("The contents of the Array A[10] are\n");
for(i=;i<;i++)
printf("%d ",A[i]); /*显示数组A中的内容*/
printf("\nPlease input a interger for search\n");
scanf("%d",&n); /*输入待查找的元素*/
addr = bin_search(A,,n); /*折半查找,返回该元素在数组中的下标*/
if(- != addr) /*查找成功*/
printf("%d is at the %dth unit is array A\n ",n,addr);
else printf("There is no %d in array A\n",n); /*查找失败*/
}

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3681774.html

顺序查找 && 折半查找的更多相关文章

  1. C语言查找算法之顺序查找、二分查找(折半查找)

    C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的 ...

  2. python3--算法基础:二分查找/折半查找

    算法基础:二分查找/折半查找 #!/usr/bin/env python # -*- coding:utf-8 -*- # 算法基础:二分查找/折半查找 def binarySearch(dataSo ...

  3. 算法学习记录-查找——折半查找(Binary Search)

    以前有个游戏,一方写一个数字,另一方猜这个数字.比如0-100内一个数字,看谁猜中用的次数少. 这个里面用折半思想猜会大大减少次数. 步骤:(加入数字为9) 1.因为数字的范围是0-100,所以第一次 ...

  4. swift版 二分查找 (折半查找)

    二分查找作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围之内,大大缩短了搜索时间,但它有一个前提,就是必须在有序数据中进行查找.废话少说,直接上代码,可复制粘贴直接出结果! import ...

  5. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  6. LeetCode编程训练 - 折半查找(Binary Search)

    Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...

  7. java基础-数组的折半查找原理

    java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...

  8. 算法与数据结构基础 - 折半查找(Binary Search)

    Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...

  9. C++实现顺序查找,折半查找,插值查找

    1.顺序查找 从数组起始扫描到数组结尾,判断该索引数组是否和关键字相等,成功返回1 代码如下: //顺序查找 int seqSearch(int *array, int low, int high, ...

随机推荐

  1. 机器学习之路:tensorflow 深度学习中 分类问题的损失函数 交叉熵

    经典的损失函数----交叉熵 1 交叉熵: 分类问题中使用比较广泛的一种损失函数, 它刻画两个概率分布之间的距离 给定两个概率分布p和q, 交叉熵为: H(p, q) = -∑ p(x) log q( ...

  2. 机器学习之路:python 网格搜索 并行搜索 GridSearchCV 模型检验方法

    git:https://github.com/linyi0604/MachineLearning 如何确定一个模型应该使用哪种参数? k折交叉验证: 将样本分成k份 每次取其中一份做测试数据 其他做训 ...

  3. django设置数据库事务,通过异常处理回滚事务

    1.setting.py配置文件,开启事务ATOMIC_REQUESTS DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql' ...

  4. [LOJ2541][PKUWC2018]猎人杀(容斥+分治+FFT)

    https://blog.csdn.net/Maxwei_wzj/article/details/80714129 n个二项式相乘可以用分治+FFT的方法,使用空间回收可以只开log个数组. #inc ...

  5. 2017 ACM Amman Collegiate Programming Contest

    A - Watching TV /* 题意:求出出现次数最多的数字 */ #include <cstdio> #include <algorithm> #include < ...

  6. 监控 Linux 系统的 7 个命令行工具

    监控 Linux 系统的 7 个命令行工具: " 深入 关于Linux最棒的一件事之一是你能深入操作系统,来探索它是如何工作的,并寻找机会来微调性能或诊断问题.这里有一些基本的命令行工具,让 ...

  7. Codeforces Round #275 (Div. 1)A. Diverse Permutation 构造

    Codeforces Round #275 (Div. 1)A. Diverse Permutation Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 ht ...

  8. PIC JDM Prototype Programmer 1001

    In need of a programmer for PIC micro controllers I decided to build my own one. This programmer has ...

  9. 用命令行安装并启动Windows Phone 8 App

    一.安装并启动应用 "C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment\XapDep ...

  10. .NET:事务、并发、并发问题、事务隔离级别、锁等相关资料整理

    这里面的有三篇文章,必须要读读:http://technet.microsoft.com/en-us/library/ms189130(v=sql.105).aspx. 这里有一个系列,我还没有读:h ...