
数据结构与算法设计
文章平均质量分 75
面向对象 修修补补
用心做好每一件事
展开
-
排序算法总结(C++语言)
今天静下心来对一些排序算法进行总结,全部使用c++语言。//按名次排序template void Rearrange(T a[],int n,int r[]){ //按序重排数组a中的元素,使用附加数组u T *u=new T[n+1]; //在u中移动到正确的位置 for(int i=1;i<n;i++) u[r[i]]=a[i]; //移回到a中 for(int i=原创 2014-04-16 23:17:53 · 1375 阅读 · 0 评论 -
冒泡排序时间复杂性的分析
关于冒泡排序时间复杂性,大家都知道最坏情况下为O(n^2)为什么最好情况下为O(n),很多人有疑问,下面我们就来分析一下:首先大家看看下面两种冒泡排序的方法:方法一://冒泡排序 template class T> void Bubble(T a[],int n) { //把数组a[0:n-1]中最大的元素冒泡移到右边 for(int i=原创 2014-08-17 08:58:50 · 2128 阅读 · 0 评论 -
选择排序的时间复杂度分析
方法一:templatevoid SelectSort(T a[],int n){}原创 2014-08-16 08:40:49 · 1729 阅读 · 0 评论 -
快速排序的递归和非递归分析
1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。(1) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。(2)快速排序的原创 2014-08-21 08:52:03 · 945 阅读 · 0 评论 -
最优二叉树(霍夫曼树)分析
1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。2.树的带权路径长度(Weighted Path Length of Tree,简记为WPL) 结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。 结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。 树的带权路原创 2014-08-21 08:54:30 · 1974 阅读 · 0 评论 -
堆排序详解
实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。原创 2014-08-21 08:51:24 · 749 阅读 · 0 评论 -
反转一个链表的两种方法:递归和循环
下面是反转一个链表的两种方法:一、循环算法// //反转一个链表,循环算法// LinkList Reverse(LinkList& head)// {// // if(!head)// // return head;// //此时不用判断head是否为空,如是空的话返回的也是空// LinkList cur = head;// LinkList hou;//原创 2014-05-23 20:04:58 · 1085 阅读 · 0 评论 -
广度优先遍历二叉树
// //广度优先遍历二叉树// //从一个顶点开始,识别所有可到达顶点// //的方法叫作广(宽)度优先搜索,这种// //搜索可使用队列来实现 typedef struct binarytree { EleType data; struct binarytree *LeftChild; struct binarytree *RightChild原创 2014-05-24 11:35:12 · 1002 阅读 · 0 评论 -
三种插入排序的分析
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。一、直接插入排序原创 2014-08-17 08:57:49 · 1117 阅读 · 0 评论