〇、引言
排序和查找是计算机中最常用的两种操作。每天你在使用计算机时,系统背后都会执行大量的排序或查找工作。例如你在Windows电脑中打开一个文件夹,然后执行【按文件名排序】目录中的文件时,就执行了排序操作。当你打开一篇Word文档,然后希望把其中的“清道光二十二年”都替换成“公元1842年”,那么其实就是在执行查找操作(有时也称为搜索或模式匹配,注意这里所说的模式匹配主要是指精确的模式匹配,模糊的模式匹配不在本文所探讨的范围之内)。
因为排序和查找是计算机中非常常见的、也是量比较大的操作,所以设计出高效的算法具有极强的现实意义。而且相关的成熟算法也已经是教科书里必讲的内容了。例如大家耳熟能详的排序算法就包括:冒泡排序、快速排序和希尔排序等等。常常被提到的查找算法则有:KMP算法、BM算法和BMH算法等等。
你在学习数据结构和算法时,常常会被要求自己编程实现一下诸如冒泡排序或者KMP算法等等,类似的问题在IT公司的笔试或面试环节也可能成为考点。但是如果你平常在编写一些实用程序,或者从事其他开发工作时,如果所有的类似算法都自己来实现可能就太过麻烦了。幸好,几乎所有的高级语言都为我们提供了现成的函