
数据结构
文章平均质量分 71
seu2hit
这个作者很懒,什么都没留下…
展开
-
冒泡排序
一.排序分析: 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不原创 2013-03-31 15:19:03 · 418 阅读 · 0 评论 -
堆排序(最大堆)
一.排序分析 堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。 二叉堆的定义: 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的原创 2013-03-31 20:06:36 · 599 阅读 · 0 评论 -
计数排序
一.排序分析: 非比较排序 参考《算法导论》 二.代码(C++): // count_sort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; void count_sort(int *a,int *b,int *c,int n,int k); int _tmain(in原创 2013-03-31 21:42:40 · 409 阅读 · 0 评论 -
插入排序
一.排序分析: 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 二.代码(C++) // sort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; #define NUM 10 void Insert_原创 2013-03-31 15:08:17 · 418 阅读 · 0 评论 -
直接选择排序
一.排序分析 思想:每次从非排序区选择最小的记录,将其与非排序区的第一个记录交换。 直接选择排序 在n个记录的文件的直接选择排序可以经过n-1趟直接选择排序得到的有序结果。 (1)初始状态:无序区【1..n】,有序区为空。 (2)第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1原创 2013-03-31 16:07:20 · 412 阅读 · 0 评论 -
归并排序
一.排序分析: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。 如 设有数列{6,202,100,301,38,8,1} 初始状态: [6] [202] [100] [301]原创 2013-03-31 20:48:04 · 420 阅读 · 0 评论 -
快速排序
一.排序分析 参看《算法导论》 二.代码(C++) // sort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; #define NUM 10 void Quick_Sort(int *a,int low,int high); int partiti原创 2013-03-31 15:44:28 · 405 阅读 · 0 评论