元素各类型的排序方式总结

关于元素的排序方式,当前了解到的一共有三种,分别是:插入排序、交换排序、选择排序。那么这三种排序方式分别有什么优缺点呢?它们相互之前的区别又是什么呢?让我们一起来了解一下。

首先是插入排序,插入排序一般也被人们称为直接插入排序。这是一种专门针对于少量元素的排序,它是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而将一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。它的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌。示例图:
元素各类型的排序方式总结_第1张图片
在数组A=(5,2,4,6,1,3)上插入排序的操作。数组下标出现在长方形的上方,数组位置中存储的值出现在长方形中。(a)(e)第(1)(8)行for循环的迭代。每次迭代中,黑色的长方形保存取自A[j]的关键字,在第5行的测试中将它与其左边的加阴影的长方形中的值进行比较。加阴影的箭头指出数组值在第6行向右移动一个位置,黑色的箭头指出在第8行关键字被移到的地方。(f)最终为排序好的数组。

接着是交换排序,何谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。下图为使用c语言实现的一个交换排序的函数:

元素各类型的排序方式总结_第2张图片
最后是选择排序,相对与上面的两种排序方法,选择排序就显得比较简单且直观了。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。所以说:选择排序是不稳定的排序方法。使用Javascript进行对选择排序的演示:

元素各类型的排序方式总结_第3张图片

你可能感兴趣的:(C语言与数据结构,数据结构)