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

想做网站湖南省公司注册网站

想做网站,湖南省公司注册网站,网站建设 图片上传,网页游戏网游目录 一 降序(建小堆) 二 升序 (建大堆) ​三 优化(以升序为例) 四 TOP-K问题 一 降序(建小堆) void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }//降序 建小堆 void AdjustUp(int* a, int child) {int parent (child - 1) / 2;while (child 0){if (a[chil…目录 一 降序(建小堆) 二 升序 (建大堆) ​三 优化(以升序为例) 四 TOP-K问题 一 降序(建小堆) void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }//降序 建小堆 void AdjustUp(int* a, int child) {int parent (child - 1) / 2;while (child 0){if (a[child] a[parent]){Swap(a[child], a[parent]);child parent;parent (child - 1) / 2;}else{break;}} }void AdjustDown(int* a, int n, int parent) {int child parent * 2 1;while (child n){if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }void HeapSort(int* a, int n) {int end n - 1;int i 0;//建堆for (i 1; i n; i){AdjustUp(a, i);}while (end 0){Swap(a[0], a[end]);AdjustDown(a, end, 0);end--;} }int main() {int a[] { 2, 3, 5, 7, 4, 6, 8 };HeapSort(a, sizeof(a) / sizeof(int));return 0; } 二 升序 (建大堆) //升序 建大堆 void AdjustUp(int* a, int child) {int parent (child - 1) / 2;while (child 0){if (a[child] a[parent]){Swap(a[child], a[parent]);child parent;parent (child - 1) / 2;}else{break;}} }void AdjustDown(int* a, int n, int parent) {int child parent * 2 1;while (child n){if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }void HeapSort(int* a, int n) {int end n - 1;int i 0;//建堆for (i 1; i n; i){AdjustUp(a, i);}while (end 0){Swap(a[0], a[end]);AdjustDown(a, end, 0);end--;} }int main() {int a[] { 2, 3, 5, 7, 4, 6, 8 };HeapSort(a, sizeof(a) / sizeof(int));return 0; } 三 优化(以升序为例) 可以用向下建堆的方法 void AdjustDown(int* a, int n, int parent) {int child parent * 2 1;while (child n){if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }//void HeapSort(int* a, int n) //{ // int end n - 1; // int i 0; // //建堆 // for (i 0; i n; i) // { // AdjustUp(a, i); // } // // while (end 0) // { // Swap(a[0], a[end]); // AdjustDown(a, end, 0); // end--; // } //}void HeapSort(int* a, int n) {int end n - 1;int i 0;//建大堆for (i (n-1-1) / 2; i 0; i--){AdjustDown(a, n, i);}while (end 0){Swap(a[0], a[end]);AdjustDown(a, end, 0);end--;} } int main() {int a[] { 2, 3, 5, 7, 4, 6, 8, 65, 100, 70, 32, 50, 60};HeapSort(a, sizeof(a) / sizeof(int));return 0; } 这样建堆的方式对时间复杂度有什么优化吗? 四 TOP-K问题 TOP - K问题即求数据结合中前K个最大的元素或者最小的元素一般情况下数据量都比较大。 比如专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 对于Top - K问题能想到的最简单直接的方式就是排序但是如果数据量非常大排序就不太可取了(可能数据都不能一下子全部加载到内存中)。最佳的方式就是用堆来解决基本思路如下1. 用数据集合中前K个元素来建堆 前k个最大的元素则建小堆 前k个最小的元素则建大堆 2. 用剩余的N - K个元素依次与堆顶元素来比较不满足则替换堆顶元素 将剩余N-K个元素依次与堆顶元素比完之后堆中剩余的K个元素就是所求的前K个最小或者最大的元素。 #includestdio.h #includestdlib.h #includetime.htypedef int HPDataType;void Swap(HPDataType* p1, HPDataType* p2) {HPDataType tmp *p1;*p1 *p2;*p2 tmp; }void AdjustDown(HPDataType* a, int n, int parent) {int child parent * 2 1;while (child n){if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }void PrintTopK(const char* filename, int k) {//1 建堆--用a中前K个元素建堆(小堆)FILE* fout fopen(filename, r);if (fout NULL){perror(fopen fail);return;}int* minheap (int*)malloc(sizeof(int) * k);if (minheap NULL){perror(malloc fail);return;}for (int i 0; i k; i){fscanf(fout, %d, minheap[i]);}//前K个建小堆for (int i (k-2) / 2; i 0; i--){AdjustDown(minheap, k, i);}//2 将剩余n-k元素与堆顶元素比较, 满足就交换int x 0;while (fscanf(fout, %d, x) ! EOF){if (x minheap[0]){//替换进堆minheap[0] x;AdjustDown(minheap, k, 0);}}for (int i 0; i k; i){printf(%d , minheap[i]);}printf(\n);fclose(fout);}void CreateDate() {//造数据int n 100000;srand(time(0));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 x (rand() i) % n;fprintf(fin, %d\n, x);}fclose(fin); }int main() {CreateDate();PrintTopK(data.txt, 5);return 0; } 本节对前面的二叉树基础很高, 没有理解的, 可以翻看我之前对二叉树顺序结构及其实现的章节. 继续加油!
http://www.dnsts.com.cn/news/232520.html

相关文章:

  • 使用html做网站的网页网站建设有哪些软件
  • 温州哪里有网站建设设计师服务平台网
  • 多少个网站成都网络营销品牌代理机构
  • 网站可以同时做竞价和优化吗node 做的大型网站
  • 南宁建设银行官网招聘网站一个好的网站建设
  • 河南省住建局官网温州优化网站方法
  • 网站开发明细市网站开发公司
  • 动画网站建设办公室装修设计简约
  • 牡丹江市建设工程交易中心网站奇迹网页游戏排行
  • 网络推广方案的概念安徽网站建设SEO优化制作设计公司
  • 邯郸网站建设行情石家庄企业商城网站建设
  • 网站开发教程PDF微盘下载推广普通话宣传语100字
  • 网站建设与发布百度公司可以建设网站
  • 微信手机网站支付怎么做网站的需求分析包括哪些
  • 做网站的图片尺寸怎么设定wordpress 插件
  • wordpress网站设密码错误黄页是干什么用的
  • wordpress域名访问不了安阳网站如何做优化
  • 网站建站软件手机app 网站建设
  • 网站开发技巧网站开发者模式怎么打开
  • 营销型企业网站策划方案燃灯seo
  • 湘潭简单的网站建设公司上海营销型网站建设公司
  • 站内优化网站怎么做团队网站建设哪家便宜
  • 网站建设合同 域名续期网店培训机构
  • 甘肃省城乡建设厅网站做直播券的网站有多少
  • 怎样制作单页网站校园网站建设培训简讯
  • 建设部网站黑臭水体公布在哪里可以查公司注册信息
  • 服装企业网站建设现状深圳微交易网站开发
  • asp.net网站建设论文泰安网络公司电话
  • 2017年网站建设视频教程-邵阳网络公司-邵阳网站建设|邵阳网站制作
  • 成都手机网站建设报价表重庆市城市建设综合开发办网站