您当前的位置:首页 > 计算机 > 编程开发 > 编程箴言

几句话描述简单算法——排序与搜索

时间:03-14来源:作者:点击数:
  一、排序
  
  1)桶排序
  
  准备大量的木桶,用木桶的标号(数组下标)作为数据,按照木桶标号的顺序进行排序。
  
  1
  
  2)选择排序
  
  从“待排序部分”找到最小值(或最大值),让“待排序部分”的起始位置向后移动。
  
  2
  
  3)冒泡排序
  
  比较相邻的两个数据,把这两个数据按照大小关系正确的交换排列。
  
  3
  
  4)插入排序
  
  不断地把数据插入已排序的部分数据列,里面恰当的位置。
  
  4
  
  5)归并排序
  
  分两步走,先了解下归并的概念。归并:把“几个已排序的数据列”合并成“一个已排序的数据列”。
  
  5
  
  归并排序由分割和归并两个构成。
  
  6
  
  6)希尔排序
  
  希尔排序就是把数据以一定的间隔进行分组,并且对每个组进行的排序。
  
  7
  
  7)快速排序
  
  从数据列中任意取出一个值P(基准值),再把“>P”和“<P”的值分离出来,得到新的数据列,P在数据列中的最终位置就确定了。
  
  8
  
  二、搜索
  
  1)线性搜索
  
  线性搜索就是从起始数据开始,按顺序排除,比较每个数据是否与目标数据一致。
  
  9
  
  2)二分搜索
  
  二分搜索的前置条件是数据列已经排好序。
  
  二分搜索专注数据列中间位置M1,将数据列分为左右部分,如果数据一致就结束;否则缩小范围,在左边或右边数据列重复查找中间位置M2等,直到结束。
  
  10
  
  3)哈希搜索
  
  1.创建哈希表,利用哈希函数求得一个哈希值,将哈希值作为下标。
  
  2.哈希冲突,很有可能会出现哈希值相同,则可以在哈希值中保存一个单项列表(PHP中可以用Array)。
  
  3.通过哈希值限定到特定的分组里,实现高效搜索。
  
  11
  
  4)字符串搜索
  
  “子字符串是数组(多个数据)”,将子字符串的每个字符和目标字符串中的字符一一比较,如果不匹配,重新匹配,下一次开始匹配的位置,就是在当前位置后移一位。
  
  12
  
  5)KMP搜索
  
  KMP算法可以根据子字符串出现不匹配的位置,决定下一次开始比较字符的位置。
  
  13
  
  6)BM搜索
  
  BM算法从子字符串的末尾字符开始匹配,根据不匹配的字符和位置信息,决定下一次匹配开始的位置。
  
  14
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
    无相关信息
栏目更新
栏目热门