Sort Algorithms
lulipeng_cpp
计算机迷
展开
-
shell_sort
希尔排序是直接插入排序的改进版。首先设置步长len,然后分组,下标之差为步长整数倍的分为一组。然后去len/2作为步长,直至len=1,此时就是直接 插入排序了。 代码如下:#includeusing namespace std;void shell_sort(int a[],int n){ int i,j,len,t原创 2012-04-10 21:02:18 · 949 阅读 · 0 评论 -
merge_sort
归并排序是一种基于归并方法的排序。所谓归并是指将两个或两个以上的有序表合成一个新的有序表,包含所有元素。 利用归并思想进行排序,可这样实现:首先将整个表看成是n个有序子表,每个子表的长度为1。然后两两归并,得到n/2个长度为2的子表。然后再两两归并,得到 n/4个长度为4的有序子表。依此类推,直至得到一个长度为n的有序表为止。原创 2012-04-14 08:33:23 · 1262 阅读 · 0 评论 -
select_sort
直接选择排序的思想:在每一趟排序中,在待排序子表中选出关键字最大或最小的元素放在其最终位置上。 代码如下:#includeusing namespace std;void select_sort(int a[],int n){ int i,j,min,tem; for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n原创 2012-04-16 22:34:15 · 1371 阅读 · 0 评论 -
heap_sort
堆排序是利用堆来进行排序。 堆的定义:n个元素的序列(a1,a2...an)当且仅当满足下面关系时,称为堆。 (a(i)=a(2*i) && a(i)>=a(2*i+1))其中,2*i+1 堆的模型:可以借助完全二叉树来理解。每一节点的值均不大于或不小于其左右孩子节点的值。原创 2012-04-16 23:14:40 · 864 阅读 · 0 评论 -
insertion_sort
现在来讲下插入排序。 输入:a1,a2...an。用数组a[n]来存储。 输出:将n个数按升序排列。 实现的代码如下: 第一种(有监视哨):#includeusing namespace std;void insertion_sort(int a[],int n) //插入排序{ int i,j; for原创 2012-03-08 04:55:59 · 1762 阅读 · 0 评论 -
bubble_sort
现在来讲下冒泡排序。 基本思想:从一端开始,逐个比较相邻的两个元素,发现倒序即交换。 贴下我的代码:(升序排列) 代码一:(每次都首先将未排序的最小数冒到数组最前端)#includeusing namespace std;/*从数组末端开始*/void bubble_sort(int a[],int n) { int i,j,te原创 2012-03-10 12:08:58 · 1668 阅读 · 0 评论 -
quick_sort
由于冒泡排序是以相邻元素来比较和交换的,因此,若一个元素离其最终位置较远,则需要进行多次的比较和移动操作。而快速排序则很好的解决了上述问题。 所以,可以说快排是冒泡排序的改进版本。 基本思想:首先选定一个元素作为中间元素,然后将表中所有元素和该元素相比较,将表中比中间元素小的元素调到表的前面,比中间元素大的元素调到表的后 面,再将中间元素放到这两部分之间作为分界原创 2012-04-10 20:28:02 · 1197 阅读 · 0 评论