排序算法算是比较基本的算法,同时也是最重要的算法,涉及到的知识也比较多,下面记录一下各种排序算法的实现,包括插入排序,选择排序,快速排序,归并排序,冒泡排序等常见的排序算法:...
分类:
其他好文 时间:
2014-09-29 15:37:51
阅读次数:
130
在看数据结构导论的时候,你会不会感觉算法有点多,这么多算法什么时候能够记住?如果你这样想就错了。米老师曾说:“记是记不住的。”看的多了也就记住了。当然还有另外一种思考模式,以自己的理解去学习,知其本质,抓住核心。在此对排序这一块做了一个小小的总结:
总结:其实很多时候我们根本不用去记,抓住核心本质转换成自己的理解方式也就记住了,就像是两个数交换,用一个变量作为中转站,依次交换值就...
分类:
其他好文 时间:
2014-09-28 19:07:25
阅读次数:
182
1、冒泡排序 冒泡排序是一种简单的排序方法,算法如下: 1.?首先将所有待排序的数字放入工作列表中。 2.?从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交...
分类:
其他好文 时间:
2014-09-25 00:16:38
阅读次数:
432
排序算法有很多,所以在特定情景中使用哪一种算法很重要。为了选择合适的算法,可以按照建议的顺序考虑以下标准:(1)执行时间(2)存储空间(3)编程工作 对于数据量较小的情形,(1)(2)差别不大,主要考虑(3);而对于数据量大的,(1)为首要。主要排序法有:一、冒泡(Bubble)排序——相邻交换二、...
分类:
其他好文 时间:
2014-09-18 05:23:54
阅读次数:
274
1:合并排序 合并排序算法使用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最后总将排好序的子集合合并成所要求的排好序的集合。算法描述如下:void MergeSort(Typr a[],int left,int right....
分类:
其他好文 时间:
2014-09-16 12:15:50
阅读次数:
163
基本思想 设归并排序的当前区间是R[low..high],分治法的三个步骤是: ①分解:将当前区间一分为二,即求分裂点 ②求解:递归地对两个子区间R[low..mid]和R[mid+1..high]进行归并排序; ③组合:将已排序的两个子区间R[low..mid]和R[mid+1..high]归并为一个有序的区间R[low..high]。...
分类:
其他好文 时间:
2014-09-07 19:50:35
阅读次数:
244
希尔排序(Shell Sort)是插入排序的一种,其实质就是分组插入排序,该方法又称缩小增量排序,因D.L.Shell于1959年提出而得名。它是对直接插入排序的一种改进,通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使得数据项大跨度的移动。 基本思想 先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后...
分类:
其他好文 时间:
2014-09-07 17:21:38
阅读次数:
172
1. 快排 详见之前博文快速排序算法。 2. 堆排序 详见之前博文非递归方法的堆排序实现。 3. 简单排序(冒泡排序、选择排序和插入排序) 代码如下: #include #include #include #define N 20static void show(int *arr, int len)...
分类:
其他好文 时间:
2014-09-05 14:08:51
阅读次数:
198
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
其他好文 时间:
2014-09-04 22:13:10
阅读次数:
337