排序算法
肖恩•布莱恩特
这个作者很懒,什么都没留下…
展开
-
Linux C学习笔记-排序算法5-希尔排序
希尔排序希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。基本思想将待排序列划分为若干组,在每一组内进行插入排序,以使整个序列基本有序,然后再对整个序列进行插入排序。例如,将n个数据元素分成d个自序列:{R[1],R[1 + d],R[1+2d],...,R[1+kd]}原创 2013-11-23 22:24:30 · 1125 阅读 · 0 评论 -
Linux C学习笔记-排序算法2-冒泡排序
冒泡排序冒泡排序(Bubble Sort,或称:泡沫排序、气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。基本概念冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一原创 2013-11-17 15:20:50 · 1343 阅读 · 0 评论 -
Linux C学习笔记-排序算法1-插入排序
插入排序插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。基本思想有一个已经有序的数据序列,要求原创 2013-11-17 14:08:23 · 1257 阅读 · 0 评论 -
Linux C学习笔记-排序算法6-二路归并排序
归并排序基本思想:将两个或两个以上的有序序列合并成一个新的有序序列:这种归并方法称为2路归并。将3个有序序列归并为一个新的有序序列,成为3路归并;将多个有序序列归并为一个新的有序序列,成为多路归并。检测两个有序序列A和B,C为归并后的新的有序序列:当i和j都在两个序列内变化时,根据关键码的大小,较小的数据元素排放到新序列k所指位置中;当i和j中有一个已经超出原创 2013-11-24 15:28:01 · 1355 阅读 · 0 评论 -
Linux C学习笔记-排序算法4-快速排序
快速排序设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第1个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。排序步骤一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N原创 2013-11-17 17:04:11 · 1147 阅读 · 0 评论 -
Linux C学习笔记-排序算法3-选择排序
选择排序每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。算法步骤1 依次遍历数列的无序部分(第一次认为整个数列都为无序)2 找出最小(或最大)的一个元素3 将找出来的最小元素与无序数列第一个元素交换,使得无序数列的第一个元素也变成有序数列4 重复上述步骤,直到无序数列中剩下一个元素为止C语言示例原创 2013-11-17 16:09:36 · 1146 阅读 · 0 评论