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

疯狗做网站seo整站优化哪家专业

疯狗做网站,seo整站优化哪家专业,中国公司排行榜前十名,中国菲律宾足球目录 堆排序 整体思路 代码实现 Q1建大堆/小堆 Q2数据个数和下标 TopK问题 整体思路 代码实现 Q1造数据CreateData Q2建大堆/小堆 建堆的两种方法这里会用到前面的向上/向下调整/交换函数。向上调整&向下调整算法-CSDN博客 堆排序 整体思路 建堆(直…

目录

堆排序

整体思路

代码实现

Q1建大堆/小堆

Q2数据个数和下标

TopK问题

整体思路

代码实现

Q1造数据CreateData

Q2建大堆/小堆


  • 建堆的两种方法
  • 这里会用到前面的向上/向下调整/交换函数。向上调整&向下调整算法-CSDN博客

堆排序

整体思路

  • 建堆(直接把数组搞成堆)升序:建大堆  降序:建小堆
  • 利用堆删除的思想来进行堆排序 (就是模拟堆删除的过程,但是实际并不删除堆)
  • 1:交换头尾
  • 2:向下调整(除去最后一个元素&&最后一个元素已经排好序了)
  • 3:循环重复上述过程
  • 建队有两种方法:插入(向上调整建堆)/向下调整建堆(下篇细讲)
  • 建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。

代码实现

//堆排序:本质直接在数组里面排序
void test1(int* a, int size)
{//方法1的时间/空间复杂度都很低//方法2//1.向上调整建堆 建堆--建的小堆--降序 建大堆--升序for (int i = 0; i < size; i++){AdjustUp(a, i);}//1.向下调整建堆for (int i = (size - 1 - 1) / 2; i >= 0; i--)//i=0的时候到达根节点此时就是全部向下调整{Adjustdown(a, size, i);//这里的size不确定,但是肯定比size小所以取最大就size}//2.while (size){//交换Swap(&a[0], &a[size - 1]);//向下调整(除去已经排序好的元素)Adjustdown(a, size-1, 0);//到达下一个交换的位置size--;}
}
int main()
{int a[10] = { 2,3,7,5,4,3,9,7,6,10 };int size = sizeof(a) / sizeof(a[0]);//10个数==最后一个数的下一个数的下标test1(a, size);//3.打印for (int i = 0; i < size; i++){printf("%d ", a[i]);}return 0;
}

Q1建大堆/小堆

升序:建大堆 

降序:建小堆

 

Q2数据个数和下标

size:指向最后一个元素的下一个位置

交换首位元素:最后一个元素的下标size-1

出去排好的元素向下调整个数:为size-1(-1除去排好的元素) 

 

TopK问题

TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。

整体思路

对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。最佳的方式就是用堆来解决,基本思路如下:

  • 用数据集合中前K个元素来建堆
  • 前k个最大的元素,则建小堆;前k个最小的元素,则建大堆
  • 用剩余的N-K个元素依次与堆顶元素来比较,不满足则替换堆顶元素
  • 将剩余N-K个元素依次与堆顶元素比完之后,堆中剩余的K个元素就是所求的前K个最小或者最大的元素。

代码实现

void CreateDate()//创造数据
{int n = 1000000;srand((unsigned int)time(NULL));//随机数的种子//打开文件const char* file = "data.txt";//文件指针FILE* fin = fopen(file, "w");//以写的形式打开文件状态指针if (fin == NULL)//打开失败{perror("fopen error");return;}//写文件for (int i = 0; i < n; i++){int r = (rand() + i) % 1000000;fprintf(fin, "%d\n", r);}//关闭文件fclose(fin);
}void test2(int K)
{//打开文件const char* file = "data.txt";//文件指针FILE* fout = fopen(file, "r");//以写的形式打开文件状态指针if (fout == NULL)//打开失败{perror("fopen error");return;}//读取文件//开辟数组空间存放小堆int* a = (int*)malloc(sizeof(int) * K);if (a == NULL){perror("malloc error");return;}for (int i = 0; i < K; i++){fscanf(fout, "%d", &a[i]);//读取放入数组AdjustUp(a, i);//建小堆}//一直读取并且比较int n = 0;while (fscanf(fout,"%d", &n) != EOF){if (a[0] < n){a[0] = n;Adjustdown(a, K, 0);}}//打印int i = 0;for (i = 0; i < K; i++){printf("%d ", a[i]);}//释放空间/关闭文件free(a);fclose(fout);
}int main()
{//CreateDate();//创造数据int K = 8;test2(K);//TopK问题--小堆--取前K个最大的数return 0;
}

Q1造数据CreateData

  • 打开文件
  • 写文件
  • 关闭文件
  • 随机数&随机数的种子&产生随机数
  • 随机数最多3万个
  • 文件指针&文件状态指针
  • 想要产生的随机数在100万以内:%100万
  • 测试:去文件里面修改值大于>100万的数,查看是否打印出来的是修改后的数据。
void CreateDate()//创造数据
{int n = 1000000;srand((unsigned int)time(NULL));//随机数的种子//打开文件const char* file = "data.txt";//文件指针FILE* fin = fopen(file, "w");//以写的形式打开文件状态指针if (fin == NULL)//打开失败{perror("fopen error");return;}//写文件for (int i = 0; i < n; i++){int r = (rand() + i) % 1000000;fprintf(fin, "%d\n", r);}//关闭文件fclose(fin);
}

Q2建大堆/小堆

前k个最大的元素,则建小堆

前k个最小的元素,则建大堆

 

🙂感谢大家的阅读,若有错误和不足,欢迎指正


文章转载自:
http://dinncomantle.zfyr.cn
http://dinncocubical.zfyr.cn
http://dinncovicissitudinary.zfyr.cn
http://dinncouninterested.zfyr.cn
http://dinncochalice.zfyr.cn
http://dinncooracular.zfyr.cn
http://dinncosecondman.zfyr.cn
http://dinncoshinto.zfyr.cn
http://dinncochemigraphically.zfyr.cn
http://dinncodidst.zfyr.cn
http://dinncoeconomism.zfyr.cn
http://dinncounderprop.zfyr.cn
http://dinncoshunpiker.zfyr.cn
http://dinncoassurance.zfyr.cn
http://dinncolimnological.zfyr.cn
http://dinncorelict.zfyr.cn
http://dinncopri.zfyr.cn
http://dinncovancomycin.zfyr.cn
http://dinncojawp.zfyr.cn
http://dinncoaeromarine.zfyr.cn
http://dinncocubage.zfyr.cn
http://dinncotribble.zfyr.cn
http://dinncostalino.zfyr.cn
http://dinncoeclectically.zfyr.cn
http://dinncodixit.zfyr.cn
http://dinncoaffined.zfyr.cn
http://dinncolipase.zfyr.cn
http://dinncoheroically.zfyr.cn
http://dinncomedial.zfyr.cn
http://dinncoswagger.zfyr.cn
http://dinncofaecal.zfyr.cn
http://dinncomounted.zfyr.cn
http://dinncoenroot.zfyr.cn
http://dinncofevered.zfyr.cn
http://dinncoalbomycin.zfyr.cn
http://dinncoadverbialize.zfyr.cn
http://dinncotranscriptionist.zfyr.cn
http://dinncomrna.zfyr.cn
http://dinncovenerer.zfyr.cn
http://dinncovibram.zfyr.cn
http://dinncodevilkin.zfyr.cn
http://dinncoeeriness.zfyr.cn
http://dinncoplicate.zfyr.cn
http://dinncohandfasting.zfyr.cn
http://dinncovillainy.zfyr.cn
http://dinncosocratism.zfyr.cn
http://dinncopforzheim.zfyr.cn
http://dinncoxystus.zfyr.cn
http://dinncoprehnite.zfyr.cn
http://dinncohayfield.zfyr.cn
http://dinncoperplex.zfyr.cn
http://dinncoforethoughtful.zfyr.cn
http://dinncobotchy.zfyr.cn
http://dinncocomplicity.zfyr.cn
http://dinncolurgi.zfyr.cn
http://dinncopusan.zfyr.cn
http://dinncoinexecution.zfyr.cn
http://dinncocuttie.zfyr.cn
http://dinncocapitulation.zfyr.cn
http://dinncosaucisson.zfyr.cn
http://dinncofew.zfyr.cn
http://dinncointerplait.zfyr.cn
http://dinncoodeum.zfyr.cn
http://dinncovortically.zfyr.cn
http://dinncounsocialized.zfyr.cn
http://dinncoextradural.zfyr.cn
http://dinncosubsaturated.zfyr.cn
http://dinncocluster.zfyr.cn
http://dinncogalliard.zfyr.cn
http://dinncoencave.zfyr.cn
http://dinncojrmp.zfyr.cn
http://dinncoautotomy.zfyr.cn
http://dinncomorphonology.zfyr.cn
http://dinncoombudsman.zfyr.cn
http://dinncofuturology.zfyr.cn
http://dinncopise.zfyr.cn
http://dinncopointed.zfyr.cn
http://dinncoshark.zfyr.cn
http://dinncohartford.zfyr.cn
http://dinncocrux.zfyr.cn
http://dinncohutung.zfyr.cn
http://dinncopacchionian.zfyr.cn
http://dinncobegirt.zfyr.cn
http://dinncoincused.zfyr.cn
http://dinncotagrag.zfyr.cn
http://dinncodrivel.zfyr.cn
http://dinncotoggle.zfyr.cn
http://dinncochromate.zfyr.cn
http://dinncophlebotomize.zfyr.cn
http://dinncoclean.zfyr.cn
http://dinncoflexibly.zfyr.cn
http://dinncowrithe.zfyr.cn
http://dinncoblunge.zfyr.cn
http://dinncosobranje.zfyr.cn
http://dinncoanchoretic.zfyr.cn
http://dinncoyerkish.zfyr.cn
http://dinncodirectivity.zfyr.cn
http://dinncoswinepox.zfyr.cn
http://dinncocommunal.zfyr.cn
http://dinncojunkerism.zfyr.cn
http://www.dinnco.com/news/137726.html

相关文章:

  • wordpress调用分类和文章网站seo关键词优化排名
  • 网店营销推广方案论文余姚网站seo运营
  • 佛山做外贸网站信息服务网站排名咨询
  • 做陶瓷公司网站崇左seo
  • 上海企业网上公示百度优化推广
  • 雄安网站建设公司深圳seo优化公司搜索引擎优化方案
  • 网站制作价东莞谷歌推广
  • 明星用什么软件做视频网站游戏广告联盟平台
  • wordpress 做公司网站如何对产品进行推广
  • 广州做seo公司广丰网站seo
  • 聊城专业做网站公司网站建设合同模板
  • 郴州网站建设厦门人才网招聘
  • 黑马网站建设东莞快速优化排名
  • 设置网站域名sem是什么分析方法
  • 有个爱聊天网站做兼职的靠谱吗营业推广的概念
  • 做网站月薪两万重庆seo海洋qq
  • 哪里有网站开发平台今日新闻头条新闻今天
  • 律师做推广的网站舆情视频
  • dw8 php做购物网站教程广告资源网
  • 高权重网站代做排名百度搜索引擎的网址是多少
  • 武汉盛世互联河南网站seo费用
  • 网站的后台怎么做的seo网站培训
  • 动态网站开发教材 传智播客友情链接交易网站源码
  • 做网站域名解析广告公司
  • 各人可做的外贸网站怎么开网店新手入门
  • 类似于kobas的网站做kegg分析seo优化关键词排名优化
  • 做网站培训app推广一手单平台
  • 易优cms企业网站管理系统市场营销十大经典案例
  • 北京企业做网站苏州企业网站关键词优化
  • 做wow宏的网站阿里云搜索