本篇博客中的代码实现依然采用Swift3.0来实现。在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找、折半查找、插值查找、Fibonacci查找,还包括数结构的二叉排序树以及平衡二叉树的构建与查找,然后还聊了哈希表的构建与查找。接下来的几篇博客中我们就集中的聊一下常见的集中排序方式,并并给出相应的时间复杂度。本篇博客我们将会详细的介绍冒泡排序、插入排序、希尔排序以及选择排序,下篇博客将继续介绍堆排序、归并排序以及快速排序的相关内容。当然上述内容的代码实现我们依然采用Swift面向对象语言来实现。
本篇博客的思路与以往博客的思路一直,先分析每种排序的规则,然后给出原理示意图,最后根据示意图给出相应的代码实现。编程这东西,只要是思路清晰,给出相应的代码实现并不困难,本篇是使用Swift语言来实现的,如果你对Swift语言不熟悉,你可以选择其他你熟悉的语言来实现。虽然语言不同,但是思路和方法都是一样的。废话少说,开始今天博客的主题。
一、排序协议的定义
在博客的开头的,我们先给出排序协议的定义。因为我们本篇博客含有多种排序方式,为了使每种排序方法对外调用方式一致,我们需要定义一个排序的相关协议。所有排序的相关类都必须遵循该协议,让此协议来定义具体的排序类对外的调用方式。
下方的SortType协议就是我们定义的排序类型的协议。其中的sort()方法是遵循该协议的类必须要实现的方法。sort()函数的参数是一个含有Int类型的数组,该数组就是要排序的数组。该方法的返回值是已经被排好序的数组。具体代码如下所示。
延伸阅读
学习是年轻人改变自己的最好方式