数据结构与算法(8-1)顺序表查找及优化
目录
一、顺序表查找
二、顺序表查找优化(重点)
总代码
一、顺序表查找
从头到尾或从尾到头查找。
//顺序表查找(需要判断两次)
int ListSearch(char ch)
{for (int i = 0; i < strlen(str); i++) //一次判断{if (str[i] == ch) //二次判断return i;}return -1;
}
顺序查找虽然简单,但是缺点也比较明显,就是效率比较低,两次判断,接下来对齐进行优化,让它变成一次判断:
二、顺序表查找优化(重点)
关键思想就是:设置哨兵。
把首或尾元素作为哨兵,判断到它了可以直接退出,不用外面的for循环一次次判断。
//顺序表查找优化(数据量大的时候有奇效)(只需要判断一次,比先前效率快一倍)
int ListSearch_Optimize(char ch)
{int i = -1;str[strlen(str)] = ch; //设置哨兵while (str[++i] != ch); //不为哨兵,则继续循环(只需要判断一次,比先前效率快一倍)return i;
}
总代码
//顺序表查找及优化
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string>char str[20];//输入
char Input()
{char ch = ' ';printf("请输入一串数组:\n");for (int i = 0; i < 20 && ch != '\n'; i++){scanf("%c", &ch);str[i] = ch;}printf("请输入您想要查找的字符:");scanf("%c", &ch);return ch;
}//顺序表查找(需要判断两次,效率较低)
int ListSearch(char ch)
{for (int i = 0; i < strlen(str); i++) //一次判断{if (str[i] == ch) //二次判断return i;}return -1;
}//顺序表查找优化(数据量大的时候有奇效)(只需要判断一次,比先前效率快一倍)
int ListSearch_Optimize(char ch)
{int i = -1;str[strlen(str)] = ch; //设置哨兵while (str[++i] != ch); //不为哨兵,则继续循环(只需要判断一次,比先前效率快一倍)return i;
}int main()
{char ch;ch = Input(); //输入printf("顺序表查找结果: %d\n", ListSearch(ch)); //顺序表查找printf("顺序表优化查找结果:%d\n", ListSearch_Optimize(ch)); //顺序表查找优化return 0;
}
参考资料
https://blog.csdn.net/qq_44725331/article/details/115411296?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162876655416780262576379%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162876655416780262576379&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-115411296.first_rank_v2_pc_rank_v29&utm_term=%E6%8A%98%E5%8D%8A%E6%9F%A5%E6%89%BE&spm=1018.2226.3001.4187
数据结构与算法(8-1)顺序表查找及优化相关推荐
- 顺序表查找及其优化(Java)
顺序表查找(线性查找): 1 private static void Ordersearch(int[] arr,int num) { 2 for (int i = 0; i < arr.len ...
- 21级数据结构与算法实验1——顺序表
7-1 顺序表的建立及遍历 分数 30 作者 陈晓梅 单位 广东外语外贸大学 读入n值及n个整数,建立顺序表并遍历输出. 输入格式: 读入n及n个整数 输出格式: 输出n个整数,以空格分隔(最后一个数 ...
- 数据结构25 ————顺序表查找
数据结构25 ----顺序表查找 一. 目录 文章目录 数据结构25 ----顺序表查找 一. 目录 二. 顺序表查找 三. 顺序表查找代码 1.基本算法 2.进行优化 四. 参考资料 二. 顺序表查 ...
- 索引顺序表查找算法(分块查找)
算法背景 有时候,可能会遇到这样的表:整个表中的元素未必有序,但若划分为若干块后,每一块中的所有元素均小于(或大于)其后面块中的所有元素.我们称这种为分块有序. 对于分块有序表的查找 首先,我们需要先 ...
- 数据结构例1.已知顺序表L的长度为n,试编写算法实现在顺序表中删除值为elem的数据元素
//已知顺序表L的长度为n,试编写算法实现在顺序表中删除值为elem的数据元素 //(其中n与elem从键盘输入) # include <iostream> # include <s ...
- 带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明
带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明 一:带有哨兵的顺序表查找 1.算法设计: ...
- java数据结构实验一顺序表,java数据结构实验代码之升序顺序表
java数据结构实验代码之升序顺序表 数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779 2014年 10月 23 日 目录 一.需求分析----- ...
- 数据结构C语言实现动态顺序表
动态顺序表的C语言实现: 正文开始@Assassin 目录: 动态顺序表的C语言实现: ==什么是顺序表?== 1. 定义顺序表结构体: 2. 初始化顺序表: 3. 销毁顺序表: 4. 打印顺序表: ...
- c语言实现的sin cos查找表_考研数据结构之C语言实现顺序表的增、删、查(粘贴即可运行)...
注释详细方便理解 注释详细方便理解 注释详细方便理解 运行效果 使用IDE 环境配置 代码 #pragma clang diagnostic push#pragma ide diagnostic ig ...
最新文章
- 静态路由和默认路由的配置实例
- 物联网背后的网络安全风险
- nable to execute dex: Multiple dex files define Lcom/chinaCEB/cebActivity/R
- golang 文件 文件夹 创建 读取 移动 复制 写入 遍历
- 画瀑布图_常见的招财风水画之含义
- Strange Shuffle CodeForces - 1471E(交互题)
- PowerDesigner从数据库导入
- 01json转字符串
- 为Eclipse安装功能扩展插件
- django-模型类的修改-外键
- Sublime Text 3配置与vim模式(待完整)
- java p2p实例_java文件p2p传输
- 不装oracle客户端plsql,不安装Oracle客户端使用PLSQL
- 显示当前服务器的ip,linux查看当前服务器ip地址 命令
- 树莓派linux led字符设备驱动(互斥)
- python 下载qq群文件_利用多线程快速下载腾讯QQ群文件的方法
- Asp.net 路由详解
- 百度的春晚战事:如何扛住腾讯、阿里都宕机的量?
- 深度学习--综述前言
- 记一次完整的用户测试
热门文章
- android 调用裁切板
- This Gradle plugin requires a newer IDE able to request IDE model level 3.For Android Studio this
- android R文件丢失解决方法
- [转]几种最短路径算法的比较
- 关于HttpClient上传中文乱码的解决办法
- IntelliJ IDEA下自动生成Hibernate映射文件以及实体类
- linux shell下获取cpu温度
- [笔记]C#基础入门(八)——C#标识符的命名规则
- HDOJ 1236 排名(练耐心题)
- springmvc3.2+spring+hibernate4全注解方式整合(一)