当前位置:首页 > 全部子站 > IT > 水平考试

2011年软考程序员考试复习笔试知识点整理(5)9

来源:长理培训发布时间:2017-10-20 14:24:06

 堆排序

  算法思想:堆排序(Heap Sort)是指利用堆(heaps)这种数据结构来构造的一种排序算法。

  堆是一个近似完全二叉树结构,并同时满足堆属性:即子节点的键值或索引总是

  小于(或者大于)它的父节点。

  时间复杂度 o(nlogn)

  空间复杂度 o(1)

  比较次数:较多

  */

  void heap_adjust(int array[],int i,int len)

  {

  int rc = array[i];

  for(int j = 2 * i; j

  {

  if(j < len && array[j]< array[j+1]) j++;

  if(rc >= array[j]) break;

  array[i] = array[j]; i = j;

  }

  array[i] = rc;

  }

  void heap_sort(int array[],int len)

  {

  int i;

  for(i = (len-1)/2; i >= 0; i--)

  heap_adjust(array,i,len);

  for( i = (len-1); i > 0; i--)

  {

  swap(array[0],array[i]); //弹出最大值,重新对i-1个元素建堆

  heap_adjust(array,0,i-1);

  }

  }

  int main()

  {

  int array[] = {45, 56, 76, 234, 1, 34,23, 2, 3, 55, 88, 100};

  int len = sizeof(array)/sizeof(int);

  //bubble_sort(array,len); //冒泡排序

  /*insert_sort(array,len);*/ //插入排序

  /*bi_insert_sort(array,len);*/ //二路插入排序

  /*shell_sort(array,len);*/ //希尔排序

  /*quick_sort(array,0,len-1);*/ //快速排序

  /*select_sort(array,len);*/ //选择排序

  /*merge_sort(array,0,len-1);*/ //归并排序

  heap_sort(array,len); //堆排序

  display(array,len);

  return 0;

  }

 

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部