一、排序

1)桶排序

准备大量的木桶,用木桶的标号(数组下标)作为数据,按照木桶标号的顺序进行排序。

2)选择排序

从“待排序部分”找到最小值(或最大值),让“待排序部分”的起始位置向后移动。

3)冒泡排序

比较相邻的两个数据,把这两个数据按照大小关系正确的交换排列。

4)插入排序

不断地把数据插入已排序的部分数据列,里面恰当的位置。

5)归并排序

分两步走,先了解下归并的概念。归并:把“几个已排序的数据列”合并成“一个已排序的数据列”。

归并排序由分割和归并两个构成。

6)希尔排序

希尔排序就是把数据以一定的间隔进行分组,并且对每个组进行的排序。

7)快速排序

从数据列中任意取出一个值P(基准值),再把“>P”和“<P”的值分离出来,得到新的数据列,P在数据列中的最终位置就确定了。

二、搜索

1)线性搜索

线性搜索就是从起始数据开始,按顺序排除,比较每个数据是否与目标数据一致。

2)二分搜索

二分搜索的前置条件是数据列已经排好序。

二分搜索专注数据列中间位置M1,将数据列分为左右部分,如果数据一致就结束;否则缩小范围,在左边或右边数据列重复查找中间位置M2等,直到结束。

3)哈希搜索

1. 创建哈希表,利用哈希函数求得一个哈希值,将哈希值作为下标。

2. 哈希冲突,很有可能会出现哈希值相同,则可以在哈希值中保存一个单项列表(PHP中可以用Array)。

3. 通过哈希值限定到特定的分组里,实现高效搜索。

4)字符串搜索

“子字符串是数组(多个数据)”,将子字符串的每个字符和目标字符串中的字符一一比较,如果不匹配,重新匹配,下一次开始匹配的位置,就是在当前位置后移一位。

5)KMP搜索

KMP算法可以根据子字符串出现不匹配的位置,决定下一次开始比较字符的位置。

6)BM搜索

BM算法从子字符串的末尾字符开始匹配,根据不匹配的字符和位置信息,决定下一次匹配开始的位置。

参考资料:

写给大家看的算法书

转载于:https://www.cnblogs.com/strick/p/6428476.html

几句话描述简单算法——排序与搜索相关推荐

  1. 判断大小简单算法_算法浅谈——人人皆知却很多人写不对的二分法

    本文首发于公众号:TechFlow 1 二分法可以说是鼎鼎大名,哪怕是没有学过编程的同学,也许说不上来二分法这个名字,但是对于其中的精髓应该都是有所了解的.不了解的同学也没关系,我一句话就能交代清楚: ...

  2. C语言例题11:简单选择排序

    [c语言例题总结] 问题描述 简单选择排序 代码 #include<iostream> #include<cstdlib> #include<algorithm> ...

  3. 《排序算法系列一、简单选择排序》

    2019独角兽企业重金招聘Python工程师标准>>> 一.简单选择排序 描述:给定待排序序列A[ 0......n ] ,选择出第i小元素,并和A[i]交换,这就是一趟简单选择排序 ...

  4. 通讯录排序 (20分)_算法入门篇:简单的排序算法

    作者:dorseyCh来源:http://www.imooc.com/article/264180 很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更 ...

  5. 【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析

    [排序算法]冒泡排序.简单选择排序.直接插入排序比较和分析 写在前面: 本文简单介绍了冒泡排序.简单选择排序.直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时.进一步,我 ...

  6. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  7. 【排序算法】图解简单选择排序(图解堪比Debug显示每次循环结果)

    [排序算法]图解简单选择排序(图解堪比Debug分析每次循环结果) 写在前面: 本文主要介绍简单选择排序算法,通过图片一步步解释每一趟每一次的后移.代码通过C#实现,并输出每一次交换的情况和比较次数, ...

  8. 排序算法5——简单选择排序

    选择排序就是从待排序的元素中选择最小(最大)的元素,将其放在有序序列的相应位置,使这些元素构成有序序列.选择排序主要有两种:简单选择排序和堆排序. [简单选择排序] 编写算法,要求使用简单选择排序算法 ...

  9. C#开发技术点说明-四种简单的排序算法,AJAX,Http Module,Http 请求处理流

    我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF.Asp.Net MVC.AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.Net.WinForm.还应该有着牢固的计 ...

最新文章

  1. 有了这款可视化工具,Java 应用性能分析、调优 so easy...
  2. java爬取百度首页源代码
  3. hdu 527 Necklace
  4. web.config 指定的默认页失效
  5. Vue - 去除控制台“你正在开发模式下运行Vue”的警告
  6. livechart 只显示 y 值_【科研工具51】谷歌,谷歌学术,Scihub有效网址检索软件——Y学术...
  7. java定时产生随机数_浅析Java随机数与定时器
  8. okHttp3 源码分析
  9. 【BZOJ4818】序列计数(动态规划,生成函数)
  10. Flink 1.11 SQL 使用攻略
  11. android游戏分成,原神半年吸金10亿美元,为何国内Android商店还秉承着55分成?
  12. H83601D直插DIP千兆双口网络接口隔离滤波脉冲变压器
  13. 关于“商用超极本应用体验分享沙龙”的体验之旅——商用超极本的崛起之路、真机实测、优缺点分析与使用评价
  14. K均值聚类算法(K-Means)
  15. 我的世界java爱冰雪女王_我的世界美丽而又高冷 冰雪女王介绍
  16. 手机连无线显示服务器超时,手机登录melogin.cn连接超时解决步骤
  17. 某Y易盾滑块acToken、data逆向分析
  18. tomcat环境变量设置
  19. 奋斗群群赛2总结与心得
  20. 2022.12.9 英语背诵

热门文章

  1. nokia 基亚 wp 开发中心
  2. CSS进阶(7)—— 内联元素的掌管者line-height和vertical-align(上)
  3. 算法小记 · 字符串翻转
  4. Eclipse技巧:1.定制toString()模版
  5. python通过端口和协议查出服务名
  6. 台积电新工艺路线图披露:7nm最快明年4月试产
  7. hive on tez踩坑记2-hive0.14 on tez
  8. 证明并推导汉诺塔(河内之塔)问题公式
  9. SessionID 的本质
  10. 软件工程学习笔记——软件工程基本原理