当前位置: 首页 > news >正文

中英文免费网站建设网站搜索优化官网

中英文免费网站建设,网站搜索优化官网,wordpress直播流插件,wordpress美化登录界面堆排序 假定有一组数据极多的数,让我们进行排序,那我们很容易想到一种经典的排序方法,冒泡排序,我们对冒泡排序的时间复杂度进行分析: 显然,冒泡排序的时间复杂度是O(n^2),当数据量…

堆排序

假定有一组数据极多的数,让我们进行排序,那我们很容易想到一种经典的排序方法,冒泡排序,我们对冒泡排序的时间复杂度进行分析:

显然,冒泡排序的时间复杂度是O(n^2),当数据量巨大时,冒泡排序需要比较长时间才能完成排序,这在实际应用中是没有意义的。

而相比之下的堆排序时间开销则小得多。

接下来先给出堆排序的代码:

void Swap(int* child, int* parent)
{int tem = *child;*child = *parent;*parent = tem;
}void DownAdjust(int* p,int size,int parent)
{int child = parent * 2 + 1;while (child<size){if (child<size-1 && p[child + 1] < p[child])//size-1,不是size++child;if (p[child] < p[parent]){Swap(&p[child], &p[parent]);//parent = child;child = parent * 2 + 1;}else{break;}}
}//堆排序
void HeapSort(int* p, int size)
{//1.建堆//先找到最后一个非叶子节点,然后逆序向下调整for (int i = (size - 1 - 1) / 2; i >= 0; i--){DownAdjust(p, size, i);}//2.对堆排序int end = size - 1;while (end>0){Swap(&p[0], &p[end]);DownAdjust(p, end, 0);--end;}
}

我们知道堆在逻辑上是完全二叉树,在物理上是数组,那么给一个很大的数组,我们完全对这个数组进行建堆,然后进行堆排序。

接下来对堆排序的时间复杂度进行分析:

一个程序的时间复杂度看的是执行次数最多的基本语句,因此看建堆的时间复杂度即可:

因为堆是完全二叉树,而满二叉树也是完全二叉树,此处为了简化使用满二叉树来证明 ( 时间复杂度本来看的
就是近似值,多几个结点不影响最终结果 )

因此,时间复杂度为O(n)

两者对比我们发现,堆排序显然是更优的。

我们可以看看运行实例:

冒泡排序:

堆排序:

可以看出,堆排序的优越性。

http://www.yidumall.com/news/1372.html

相关文章:

  • 建筑装饰和网站建设哪个好如何建立一个网站
  • 网站开发要学java吗网站推广网
  • 精华吧网页搜题长沙关键词优化新行情报价
  • 东莞市住房建设部网站全网热搜榜
  • 网站建设平台还有没有趋势企业qq和个人qq有什么区别
  • 垃圾ip段做网站武汉百度seo排名
  • 橙子建站是什么平台网站建设案例
  • 重庆市公共资源交易网seo是搜索引擎优化
  • wordpress主题加入html压缩谷歌推广seo
  • 做网站 需求日本粉色iphone
  • 上海做网站技术济南seo优化外包服务公司
  • 佛山最好的网站建设公司百度推广seo自学
  • 网站开发自学还是培训青岛排名推广
  • 网站产品图怎么做网页制作费用大概多少
  • 简单的b2c网站网站建设服务
  • 国内各大网站五种营销工具
  • wordpress建站流量广州seo关键词
  • 建设书法网站的主题是电脑培训班一般要学多久
  • 网做英文网站上海公司排名
  • 厦门 网站建设闽icp南阳网站优化公司
  • mac ftp wordpress广州seo推广公司
  • 电商网站开发技术与服务器百度查关键词显示排名
  • 女性时尚资讯+淘宝客模式系列网站源码深圳seo博客
  • wordpress 食谱网站东莞搜索引擎推广
  • 在IIs下建设一个网站游戏代理是怎么赚钱的如何代理游戏
  • 网站的资讯内容百度服务中心投诉
  • app开发一般收费抖音关键词排名优化
  • 长沙微网站建设怎样建网站赚钱
  • 万维网站建设湖北网站建设制作
  • 深圳做网站开发网站推广的几种方法