归并排序是建立在归并操作上的一种有效的排序算法,时间复杂度是O(nlogn)。它过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否则将第二个有序表中的元素a[j]复制到r[k]中,并令j和k分别加上1,如此循环下去,...
分类:
编程语言 时间:
2015-05-28 00:29:03
阅读次数:
214
堆排序就是利用了最大堆(或最小堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字变得简单。以最大堆为例,它的基本思想就是:先将初始文件R[1..n]建成一个最大堆,此堆为初始的无序区;再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得...
分类:
编程语言 时间:
2015-05-28 00:10:17
阅读次数:
177
希尔排序也是插入排序的一种,但是它效率高于直接插入排序。基本思想是:首先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 2 #include 3 4 int n; 5 6 /* 7 * ...
分类:
编程语言 时间:
2015-05-27 22:35:02
阅读次数:
154
选择排序中的两个经典算法:简单选择排序,堆排序。简单选排:通过n-1次数据元素的比较,从n-i+1个记录中选择最小的数据,并与第i个数据进行交换,它的时间复杂度是O(n^2)。堆排序:利用堆的特征进行排序,复杂度为O(n*logn)。 1 #include 2 #include 3 4 int...
分类:
编程语言 时间:
2015-05-27 22:33:47
阅读次数:
163
每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中;第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行n-1趟扫描后就完成了整个排序过程 1 #include 2 #include 3.....
分类:
编程语言 时间:
2015-05-27 22:25:20
阅读次数:
159
【数据结构】——排序算法——1.2、二叉树排序
一、先上维基的图:二叉树排序wiki
图一、二叉树排序
二、描述
二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered
binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树:
若任意节点的左子...
分类:
编程语言 时间:
2015-05-21 10:52:21
阅读次数:
190
排序算法可以分为稳定排序和不稳定排序。在简单形式化一下,如果A[i] = A[j],A[i]原来在位置前,排序后A[i]还是要在A[j]位置前,这才能叫稳定排序。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,对基于比较...
分类:
编程语言 时间:
2015-05-06 10:59:54
阅读次数:
103
数据结构排序算法的概念是从网上抄录的:基本概念:1、排序:按照一定的关键字,将一个序列排列成想要得到的一个新的序列。2、内部排序和外部排序:整个排序过程完全在内存中进行,叫做内部排序。数据量较大需要借助外部存储设备才能完成,叫做外部排序。3、主关键字和此关键字..
分类:
编程语言 时间:
2015-04-29 17:35:56
阅读次数:
139
【数据结构】——排序算法——3.1、选择排序
一、先上维基的图:
分类
排序算法
数据结构
数组
最差时间复杂度
О(n²)
最优时间复杂度
О(n²)
平均时间复杂度
О(n²)
最差空间复杂度
О(n) total, O(1)auxiliary
二、描述:
选择算法算是最直观的一...
分类:
编程语言 时间:
2015-04-21 11:13:40
阅读次数:
152
概述 看了几天的排序内容,现在和大家分享一些常见的排序方法。 啥是排序? 个人理解的排序:通过对数组中的值进行对比,交换位置最终得到一个有序的数组。排序分为内存排序和外部排序。本次分享排序方法都为内存排序。 啥是排序的稳定性? 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,...
分类:
编程语言 时间:
2015-03-20 17:55:28
阅读次数:
184