主要包括冒泡、简单选择、插入、堆排、归并、快排这几种。以后会慢慢补充。可能有错,欢迎指出。#include#includeusing namespace std;//升序int arr[10000],length;//冒泡排序void Bubble_Sort(int *Arr,int length)...
分类:
其他好文 时间:
2014-07-18 15:36:53
阅读次数:
296
归并排序的基本思想是:将待排序文件看成n个长度为1的有序子文件,把这些子文件两两归并,得到 n/2 个长度为2的有序子文件,然后再把 n/2 个有序子文件两两归并,如此这样反复进行下去,直到最后得到一个长度为n的有序序列为止。归并排序的核心操作是将数组中,前后相邻的两个有序序列,归并为一个有序序列。...
分类:
其他好文 时间:
2014-07-18 09:34:37
阅读次数:
158
第一章:磁盘排序:对于一个提出的问题,不要未经思考就直接给出答案。要先深入研究问题,搞清楚这个问题的特点,依据这个特点,可能有更好的解决方式。比方:文中:最初的需求仅仅是“我怎样对磁盘文件排序”。我们首先想到了经典的归并排序。但,进一步了解到排序的内容是10000000个记录,每条记录都是一个7位整...
分类:
其他好文 时间:
2014-07-18 08:18:16
阅读次数:
241
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
其他好文 时间:
2014-07-16 19:26:44
阅读次数:
192
刚才写了k个,顺手写个2个的,在链表的归并排序中很有用,效率非常好 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next;...
分类:
其他好文 时间:
2014-07-16 17:42:41
阅读次数:
275
直接插入排序:将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1...
分类:
其他好文 时间:
2014-07-16 17:32:03
阅读次数:
223
写在前面:
排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。因此排序掌握各种排序算法非常重要。对下面介绍的各个排序,我们假定所有排序的关键字都是整数、对传入函数的参数默认是已经检查好了的。只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨。
基础知识:
...
分类:
其他好文 时间:
2014-07-16 09:47:22
阅读次数:
296
算法思想:分治法,将一个序列分为两部分,分别排序,然后合并已排序序列。算法实现: 1 MERGE_SORT(A,p,r) 2 mid = (p+r)/2 3 MERGE_SORT(A,p,mid) 4 MERGE_SORT(A,mid,r) 5 MERGE(A,p,m...
分类:
其他好文 时间:
2014-07-16 00:56:42
阅读次数:
355
Sort a linked list inO(nlogn) time using constant space complexity.题解:实现一个链表的归并排序即可。主要分为三部分:1.找到中点并返回的函数findMiddle;2.归并函数merge;3.排序函数sortList。数组的findM...
分类:
其他好文 时间:
2014-07-14 20:00:56
阅读次数:
182
接上面的题目,假若待排序的数据有重复的呢?这里采用的是归并排序。1、算法分析: 1、稳定性:归并排序是一种稳定的排序。 2、存储结构要求:可用顺序存储结构。也易于在链表上实现。 3、时间复杂度: 对长度为n的文件,需进行lgn趟二路归并,每趟归并的时间为O(n),故其时间复杂度无论是在最好情况下还是...
分类:
其他好文 时间:
2014-07-13 20:35:20
阅读次数:
373