
排序算法
文章平均质量分 67
AlbertoNo1
这个作者很懒,什么都没留下…
展开
-
插入排序
插入排序的描述 我们假设对较小数组A[0...n-2]排序的问题已经解决了,我们得到了一个大小为n-1的有序数组:A[0] ≤...≤ A[n-2]。我们如何把这个较小规模的解和元素A[n-1]一同考虑,来得到原问题的解呢?显然,我们所需要做的就是在这些有序的元素中为A[n-1]找到一个合适的位置,然后把它插入到那里。 有3种合理的做法可以达到这个目的,它们各不相同原创 2016-03-22 23:37:16 · 757 阅读 · 0 评论 -
冒泡排序
冒泡排序描述 冒泡排序比较表中的相邻元素,如果它们是逆序的话就交换它们的位置。重复多次以后,最终,最大元素就“沉到”了列表的最后一个位置。第二遍操作将第二大的元素沉下去。这样一直做,知道n-1遍以后,该列表修排好序了。第 i 遍(0 算法:原创 2016-03-22 01:02:33 · 487 阅读 · 0 评论 -
选择排序
选择排序描述选择排序开始的时候,扫描整个列表,找到它的最小元素然后和第一个元素交换,将最小元素放到它在有序表中的最终位置上。然后我们从第二个元素开始扫描列表,找到最后n-1个元素中的最小元素,再和第二个元素交换位置,把第二小的元素放到它在有序表中的最终位置上。一般来说,在对该列表做第 i 遍扫描的时候(i 的值从0到n-2),该算法在最后n-1个元素中寻找最小元素,然后拿它和A[i]交换:原创 2016-03-22 00:58:00 · 501 阅读 · 0 评论 -
合并排序
合并排序描述 合并排序本质上是将一个无序元素集分割成多个只包含一个元素的集,然后不断的将这些小的集合并,直到一个新的大有序数据集生成。例如:对于一个需要排序的数组A[0...n-1],合并排序把它一分为二:A[0...(n/2)-1]和A[(n/2)...n-1],并对每个子数组递归排序,然后把这两个排好序的子数组合并为一个有序数组。 算法:Merg原创 2016-03-17 22:28:00 · 581 阅读 · 0 评论 -
快速排序
快速排序的描述 快速排序是一种基于分治(+递归)技术的重要排序算法,广泛认为它是解决一般问题的最佳排序算法,属于比较排序的一种,而且不需要额外的存储空间。在处理中到大型数据集时,快速排序是一个比较好的选择。 快速排序按照元素的值对它们进行划分。具体来说,它对给定的数组中的元素进行重新排列,以得到一个快速排序的分区。一个分区中,所有在s下标之前的元素都小于等于A[...原创 2016-03-13 11:23:18 · 657 阅读 · 0 评论 -
计数排序
计数排序的描述 计数排序是一种高效的线性排序,它通过计算一个集合中元素出现的次数来确定集合如何排列。不同于之前介绍的一些算法是基于比较的,计数排序不需要进行元素比较,而且它的运行效率要比O(nlg n)比较排序高。 计数排序有一定的局限性。其中最大的局限就是它只能用于整型或者那些可以用整型来表示的数据集合。这是因为计数排序利用一个数组的索引来记录元素出现的次数。例如...原创 2016-03-27 23:53:46 · 501 阅读 · 0 评论 -
基数排序
基数排序的描述 基数排序是另外一种高效的线性排序算法。其方法是将数据按位分开,并从数据的最低有效位到最高有效位,依次排序,从而得到有序数据集合。例如:用基数排序对十进制数据{15,12,49,16, 36, 40}进行排序。在对各位数进行排序之后,其结果为{40,12,15, 16,36,49},在对十位进行排序之后,其结果为{12,15,16,36,40,49}。有一点非常重要,原创 2016-03-28 23:08:30 · 647 阅读 · 0 评论