有几个问题,为什么要学习初级排序算法呢?初级排序算法有哪些呢?如何实现呢?
第一个问题,学习目的,主要有以下三点:
1.我们将通过它们熟悉一些术语和简单的技巧
2.这些简单的算法在某些情况下比我们之后将会讨论的复杂算法更有效
3.以后你会发现,它们有助于我们改进复杂算法的效率。
第二个问题,初级排序算法有选择排序,插入排序,希尔排序。
选择排序概念:首先就,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。
插入排序是为了给要插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。
希尔排序是基于插入排序的快速的排序算法,希尔排序的思想是使数组中任意间隔为h的元素都是有序的。这样的数组被称为h有序数组。在进行排序时,如果h很大,我们就能将元素移动到很远的地方,为实现更小的h有序创造方便。用这种方式,对于任意以1结尾的h序列,我们都能够将数组排序。
实现如下图所示:
实现随后会放到github中,会在简书中给出相关链接。
网友评论