可以做链接的网站关于网站项目建设的申请

pingmian/2026/1/23 20:56:32/文章来源:
可以做链接的网站,关于网站项目建设的申请,起公司名字大全免费简单,店面设计包括哪些内容个人主页#xff1a;点我进入主页 专栏分类#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞#xff0c;评论#xff0c;收藏。 一起努力 目录 1.前言 2.堆排序 2.1降序排序 2.2时间复杂… 个人主页点我进入主页 专栏分类C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题       数据结构初阶 欢迎大家点赞评论收藏。 一起努力 目录 1.前言 2.堆排序 2.1降序排序 2.2时间复杂度 3.Top-k问题 4.总结 1.前言 在上一篇文章中我们主要讲解了关于大堆和小堆的代码实现今天我们主要讲解关于堆排序以及堆排序的时间复杂度我们会讲解关于经典的Top-k问题进行讲解其中我会伪造一些数据来展示今天的内容比上次的内容更加的爽更有挑战性其中的奥妙真的无法用语言来形容接下来就让我们感受一下吧。 2.堆排序 我们对数组进行降序排序我们使用堆排序在这里由于升序和降序的思想基本一致只需要修改一些符号即可完成转化所以我们只讲关于降序的内容。 2.1降序排序 在上次的内容中我们使用向上调整来创建堆我们是创建小堆还是大堆呢我们想让数据进行降序如果我们使用大堆的话堆的第一个数是最大的我们取出来之后堆的顺序就乱了我们需要重新进行大堆排序那么我们的时间复杂度为O(n^2*logn),这比我们的冒泡排序还要慢所以大堆是不可以的所以我们选择小堆排序我们这次依旧使用想上调整详细代码如下 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includeassert.h void Swap(int* num1, int* num2) {int temp *num1;*num1 *num2;*num2 temp; } void print(int* arr, int size) {for (int i 0; i size; i)printf(%d , arr[i]); } void AdJustUp(int* arr, int sz,int size) {assert(arr);int child sz, parent (child - 1) / 2;while (child0){if (arr[child] arr[parent]){Swap(arr[child], arr[parent]);child parent;parent (child - 1) / 2;}elsebreak;} } void AdJustDown(int* arr, int i, int size) {assert(arr);int parent i, child 2 * parent 1;while (childsize){if (child 1 size arr[child] arr[child 1]){child;}if (arr[parent] arr[child]){Swap(arr[parent], arr[child]);parent child;child 2 * parent 1;}elsebreak;} } void HeapSort(int* arr, int n) {assert(arr);for (int i 0; i n; i){AdJustUp(arr, i, n);}for (int i 0; i n-1; i){Swap(arr[0], arr[n - 1 - i]);AdJustDown(arr, 0, n - 1 - i);}} int main() {int arr[10];int n 10;for (int i 0; i n; i){arr[i] i;}HeapSort(arr,n);print(arr, n);return 0; } 我们的运行结构如下 事实上我们这不是我们的堆排序真正的堆排序在第一次创建小堆时代码为 for (int i (n - 1 - 1) / 2; i 0; i--){AdJustDown(arr, 0, n - 1 - i);} 向下调整为什么可以实现呢我们知道向下调整是左边和右边都是小堆然后根节点是新插入的我们就可以利用向下调整进行排序那我们在最后一个节点的父节点进行向下调整让他们都成为小堆这样我们就可以完成小堆的创建。那为什么采用这种形式呢仅仅是因为代码少吗事实上这与我们的时间复杂度有关。 2.2时间复杂度 我们看利用向上调整建立小堆的时间复杂度我们第k层有2^(k-1)个节点每个节点需要向上调整k-1次共调整(k-1)*2^(k-1)次第k-1层有2^(k-2)每个节点需要调整k-2次共调整(k-2)*2^(k-2)……第二层有2^1个节点每个节点需要调整1次第一层有2^0个节需要调整0次共需要调整T(k)0*2^01*2^1……(k-2)*2^(k-2)(k-1)*2^(k-1),我们化简可以得到T(k)(k-2)2^k2;其中klogN,所以T(k)NlogN;但是我们采用向下调整我们第k层有我们第k层有2^(k-1)个节点每个节点需要向上调整0次共调整0*2^(k-1)次第k-1层有2^(k-2)每个节点需要调整1次共调整1*2^(k-2)……第二层有2^1个节点每个节点需要调整k-2次第一层有2^0个节需要调整k-1次,共需要调整T(k)(k-1)*2^0(k-2)*2^1……1*2^(k-2)0*2^(k-1),我们化简得到T(k)2^k-k-1其中klogN,故T(k)N-logN;可以看到向下调整建立堆时间复杂度低所以我们选择向下调整这大大减少了我们的运算时间。 3.Top-k问题 有一个问题是我们在一组数中(共N个数)找到最小的k个数其中N远大于k让我们找到前k个数当数据很小的时候我们利用堆排序进行查找很容易但是当数据量特别大的时候我们就很难实现因为数据占用的内存太大了例如我们要在1百亿个数据中找到前10个最小的数100万个整形数据相当于占用37GB,这样我们就很难处理这时候就出现了我们的Top-k问题我们是如何解决这个问题呢这时候我们由于需要找最小的前10个数据我们创建一个大堆然后输入一个数据就将堆顶元素替换然后再向下调整这样就可以找到最小的10个数据我们创建100万个数据进行模拟我们的代码如下 我们将数据放在文件中生成data.txt文件 #includestdio.h int main() {FILE* pf fopen(data.txt, w);if (pf NULL){perror(fopen fail);return 1;}for (int i 0; i 1000000; i){fprintf(pf,%d\n, i);}fclose(pf);pf NULL;return 0; } 修改其中的10个数据让他成为我们的结果然后进行下一步找到这k个数 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestdlib.h #includestdbool.h #includeassert.h typedef int MyHeapData; typedef struct Heap {MyHeapData* data;int size;int capacity; }Heap; void HeapInit(Heap* php) {assert(php);php-data (MyHeapData*)malloc(sizeof(MyHeapData)*10);php-size 0; } void Swap(int* num1, int* num2) {int temp *num1;*num1 *num2;*num2 temp; } void AdJustDown(int* arr, int n, int i) {assert(arr);int parent 0, child 2 * parent 1;while (childn){if (child1narr[child] arr[child 1]){child;}if (arr[parent] arr[child]){Swap(arr[parent], arr[child]);parent child;child parent * 2 1;}elsebreak;} } void AdJustUp(MyHeapData* arr, int size) {assert(arr);int child size - 1, parent (child - 1) / 2;while (child 0){if (arr[child] arr[parent]){Swap(arr[child], arr[parent]);child parent;parent (child - 1) / 2;}elsebreak;} } int main() {//FILE* pf fopen(data.txt, w);//if (pf NULL)//{// perror(fopen fail);// return 1;//}//for (int i 0; i 1000000; i)//{// fprintf(pf,%d\n, i);//}//fclose(pf);//pf NULL;FILE* pf fopen(data.txt, r);if (pf NULL){perror(fopen fail);return 1;}int data;int i;Heap ph ;HeapInit(ph);for (i 0; i 10; i){fscanf(pf, %d, data);ph.data[i] data;AdJustUp(ph.data, i);}while (fscanf(pf, %d, data) ! EOF){if(dataph.data[0])Swap(data, ph.data[0]);AdJustDown(ph.data, 10, 0);}for (i 0; i 10; i){printf(%d , ph.data[i]);}fclose(pf);pf NULL;return 0; } 运行结果如下 这就是我们经典的Top-k问题 4.总结 今天的内容到这里就结束了希望大家可以好好的理解今天的内容欢迎大家来三连。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建设高端网站公司的目的网站的推广是怎么做的

代码随想录二刷 | 字符串 |重复的子字符串 题目描述解题思路 & 代码实现移动匹配KMP算法 题目描述 459.重复的子字符串 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: tru…

公司做网站要花多少钱平顺网站建设

错误的原因是:缺少servlet-api.jar这个包,将这个包导入项目里面就可以了。1. 我们可以到tomcat的lib目录下面找到这个包,然后在eclipse中,右击项目,2. 选择Java Build Path>Libraries>Add ExternalJARS,找到你计…

做购彩网站是怎么盈利的工作人员回应游客扔免费午餐

115.派大星的烦恼 解压下载文件时一个 bmp 文件,用notepad 打开有没有发现什么 ,提示位图什么的 用Stegsolve.jar 打开 发现很多. 和- 第一时间想到了 电报码 但提示不是电报码,除了这个那就是很像二进制了 0,1 什么的,但这个感觉…

关于网站开发所需的知识优化电池充电什么意思

myeclipse的安装就不说了,百度一下都有很多教程 但是发现现在网上很少有介绍这个软件具体如何使用,哪个组件有何用处并没有太多解释 因此讲解一下myeclipse的使用: 1.工作区【workspace】 1.当myeclipse打开后,大多数会…

文山州中小企业网站建设河北住房和城乡建设厅

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 Hello大家好,我是python学习者小杨同学,上次跟大家分享关于python的数值类型和序列类型,…

广州番禺网站制作推广建立企业网站的详细步骤

2分钟搭建企业轻量级负载均衡服务器 文章目录1. 修改配置文件2. tomcat启动参数:3. 统一编码格式1. 修改配置文件 打开IntelliJ IDEA本地安装目录中bin文件夹下的idea.exe.vmoptions和idea64.exe.vmoptions这两个文件 分别在这两个文件内容的末尾添加:…

wordpress toggle 插件给网站做优化怎么做

Spring基础 - SpringMVC请求流程和案例 什么是MVC 用一种业务逻辑、数据、界面显示分离的方法,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理…

江西网站建设价格山西省网站备案

目录 自定义组件的 v-modelv-model简化代码 自定义组件的 v-model 组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件。 <input v-model"parentData"> 等价于&#xff1a; <input :value"parentData"input"parentData …

佛山建设局官方网站漯河网站超市建设

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

网站服务器租用合同wordpress中的template

目录 建议有状压基础再食用&#xff1a;本题的状态转移方程是 dp代码片:参考代码 建议有状压基础再食用&#xff1a; n行m列 等价 n列m行 &#xff0c;因为n比较小&#xff0c;int是32位足够了&#xff0c;我们用比特位统计每一行的状态。 本题的状态转移方程是 dp[h][i][j]…

数据表和网站建设的关系著名的设计网站

随着经济的发展&#xff0c;人们对生活的需求也不再局限于温饱层面&#xff0c;越来越多的人们开始追求文化、艺术的高层次需求&#xff0c;旅游也逐渐成为人们日常放松的一种方式。由于我国人口多、易扎堆等特点&#xff0c;景区的运营监管方式也亟需改革。TSINGSEE青犀智能分…

网站开发人员的岗位职责微网站和微信公共平台的区别

目录 GCD&#xff08;最大公约数&#xff09; 1、欧几里得算法 LCM&#xff08;最小公倍数&#xff09; 一、试题 算法训练 抗击虫群 GCD&#xff08;最大公约数&#xff09; 整数 a 和 b 的最大公约数是指能同时整除 a 和 b 的最大整数&#xff0c;记为 gcd(a,b)-a的因子和…

电商网站设计公司皆选亿企邦dux5.0 WordPress

MQ 延迟队列 1. 前言 延迟队列是我们日常开发过程中&#xff0c;经常接触并需要使用到的一种技术方案。前些时间在开发业务需求时&#xff0c;我也遇到了一个需要使用到延迟消息队列的需求场景&#xff0c;因此我也在网上调研了一系列不同的延迟队列的实现方案&#xff0c;在…

项目管理软件开发案例如何优化搜索引擎的搜索功能

学习笔记-SQL语法系统性学习&#xff0c;关卡式进阶 笔记参考&#xff1a;作者鱼皮 关卡式Sql语句学习体验网站 &#xff0c;网站开源代码 如果想本地体验语法&#xff1a;1.下载大佬开源代码&#xff0c;运行前端项目&#xff08;推荐&#xff09;&#xff1b; 2.或是自己使…

城乡建设门户网站重庆建站模板代理

一、说明 计量经济学是使用统计方法来发展理论或测试经济学或金融学中的现有假设。计量经济学依赖于回归模型和零假设检验等技术。计量经济学也可以用来预测未来的经济或金融趋势。 图片来源&#xff1a;https://marketbusinessnews.com 二、 计量经济之简介 计量经济学是对经济…

海外网站怎么浏览做网站个体户执照

原文&#xff1a;Build a search engine, not a vector DB 作者&#xff1a; Panda Smith 在过去 12 个月中&#xff0c;我们见证了向量数据库&#xff08;Vector DB&#xff09;创业公司的迅猛增长。我此刻并不打算深入探讨它们各自的设计取舍。相反&#xff0c;我更想探讨和…

建设银行考试报名网站wordpress 渐变主题

一、初识python (一).Python起源 Python创始人为吉多范罗苏姆&#xff08;荷兰&#xff09;&#xff0c;Python崇尚优美、清晰、简明的编辑风格。Python语言结构清晰简单、数据库丰富、运行成熟稳定&#xff0c;科学计算统计分析领先。目前广泛应用于云计算、Web开发、科学运算…

html5 网站开发定制手机制作app的软件免费

1、函数内部使用全局变量时&#xff0c;需要申明global 1 name 小明 # 定义一个全局变量name,并给它赋值小明2 stus [] # 定义一个空list3 # list、字典、集合4 5 def a():6 # 字符串、int、float、元组 需要声明global7 global name # 函数内部使用局部变量时&a…

扁平式网站模板郑州专业制作网站费用

LeetCode 39.组合总和 题目链接&#xff1a; LeetCode 39.组合总和 解题思路&#xff1a; 用回溯的方法&#xff0c;&#xff0c;注意这次回溯不是i1&#xff0c;而是i&#xff0c;是因为可用重复选取。 代码&#xff1a; class Solution { public:vector<vector<i…

开发门户网站前程无忧网广州网站建设类岗位

在Rust中&#xff0c;如果你想要对HashMap中特定键对应的值进行累加操作&#xff0c;你需要首先检查该键是否已存在。如果存在&#xff0c;则取出其值&#xff0c;进行累加&#xff0c;然后将结果存回HashMap。如果不存在&#xff0c;则可能需要插入一个新的键值对&#xff0c;…