随笔分类 -  排序

摘要:Counting Sort 计数排序 计数排序其实就是利用了数组可以O(1)时间访问元素的特性,来排序,可是如果数据范围很大时是很浪费空间的。 伪代码: 通过数组来判断大小,和在序列中所在的位置,从而进行排序。 代码如下: 阅读全文
posted @ 2016-12-28 11:18 fengsz 阅读(104) 评论(0) 推荐(0)
摘要:Quick Sort 快速排序是目前最快的排序方法,他就是利用了分治的思想和分割(上一篇文章有讲)来完成排序。将序列进行分割,然后在将分割的前半段再分割,后半段也分割,知道前半段分割到不能再分,后半段也分到不能再分,就可以了。 代码如下: 阅读全文
posted @ 2016-12-28 11:04 fengsz 阅读(141) 评论(0) 推荐(0)
摘要:Partition 分割 函数partition(A,p,r)是一个可以将序列A【p…r】分割成A【p…q - 1】和A【q + 1…r】两部分并返回下标q的值的函数。并且能让A【p…r】中A【p…q - 1】的元素均小于A【q + 1…r】的所有元素。 例如:13 19 9 5 12 8 7 4 阅读全文
posted @ 2016-12-28 10:58 fengsz 阅读(218) 评论(0) 推荐(0)
摘要:Merge Sort 归并排序 归并排序就是不断的将自己原有的序列从中间砍开,然后不断的从两边选出小的那个数放入另一个数组中。 例如:8 5 9 2 6 3 7 1 10 4 这个序列我们就可以将他砍成两半。 步骤一:8 5 9 2 6 | 3 7 1 10 4 排序数组: 步骤二:8 5 9 2 阅读全文
posted @ 2016-12-28 10:24 fengsz 阅读(226) 评论(0) 推荐(0)
摘要:其实排序算法的稳定很简单,就只是当每一个元素都有一个id的时候那么我们该怎么去处理大小相同的元素 如果经过排序后元素大小相同的两个元素的原顺序发生了改变则称它为不稳定排序,反之则称为稳定排序。 冒泡排序:稳定排序 选择排序:不稳定排序 下面是一个代码作为参考(随手写的,没优化过代码,别介意): 阅读全文
posted @ 2016-12-21 11:38 fengsz 阅读(234) 评论(0) 推荐(0)
摘要:最近打算重新把基础过一遍,先搞搞排序。 插入排序: 顾名思义,我们就是一次次的不断插入我们的数据以保证他的单调性。就像我们平时斗地主一样的,不断的从右边选出一张牌插到左边,保证每次左边的拍一定比它小就可以了。 插入排序在排序过程中分为已排序部分和未排序部分,不断的从未排序部分拿出数字来向已排序部分插 阅读全文
posted @ 2016-12-21 11:35 fengsz 阅读(173) 评论(0) 推荐(0)
摘要:之前刚写完插入排序接下来写写冒泡排序 冒泡排序就像水泡一样不断的上浮,从而达到排序的目的。冒泡排序和插入排序一样也是分成也排序部分和未排序部分。 就是一个重复执行以下步骤的一个过程: 从数组的末尾取一个元素开始依次的向前比较相邻的两个元素,如果大小关系相反则交换位置。 举个例子: A = {5,3, 阅读全文
posted @ 2016-12-21 11:32 fengsz 阅读(154) 评论(0) 推荐(0)
摘要:插入和冒泡的排序都写完了,现在再来搞一下选择排序喽。 选则排序其实很简单,同样分成已排序部分和未排序部分。 就只是不断的从未排序部分里将最小值或最大值选出,让他与未排序部分的第一个元素交换位置,重复操作。 举个例子: A = {5,4,8,7,9,3,1}; 1.{5,4,8,7,9,3,1}; | 阅读全文
posted @ 2016-12-21 11:30 fengsz 阅读(129) 评论(0) 推荐(0)