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

深圳建西站软件定制开发介绍

深圳建西站,软件定制开发介绍,四川招标采购网,php家具网站模版参考博客#xff1a;传送门 在上面的博客中介绍了求序列第K大的几种算法#xff0c;感觉收益良多#xff0c;其中最精巧的还是利用快速排序的思想O(n)查询的算法。仔细学习以后我将其中的几个实现了一下。 解法 1#xff1a; 将乱序数组从大到小进行排序然后取出前K大传送门 在上面的博客中介绍了求序列第K大的几种算法感觉收益良多其中最精巧的还是利用快速排序的思想O(n)查询的算法。仔细学习以后我将其中的几个实现了一下。 解法 1 将乱序数组从大到小进行排序然后取出前K大总的时间复杂度为O(nlogn) 解法 2 利用选择排序或交互排序取出前K大总的时间复杂度为O(nk) 解法 3 借鉴快速排序的思想复杂度近似为O(n) #includecstdio #includealgorithm #includecstdlib using namespace std;int kth_number(int *a,int l,int r,int k) {if(r-l 1) return a[l];int keya[l];int indexl;for(int il1;ir;i){if(a[i]key) continue;else{index;swap(a[i],a[index]);}}swap(a[index],a[l]);if(r-index k) return a[index];if(r-index-1 k) return kth_number(a,index1,r,k);else return kth_number(a,l,index,k-rindex); } 测试程序 #includecstdio #includeKth_number.husing namespace std;int main() {int n,k;const int MAXN1005;int a[MAXN];printf(n); scanf(%d,n);printf(k); scanf(%d,k);if(kn) kn;printf(please input %d number:\n,n);for(int i0;in;i)scanf(%d,a[i]);printf(the %dth number of array is %d\n,k,kth_number(a,0,n,k));return 0; } 运行结果 解法 4 借助堆排序的思想将前K个数字弹出复杂度为建立堆的O(4n)加上k次堆排序O(logn)为O(4nklogn) 实现程序 #includecstdio #includecstdlib #includeclimits #includealgorithm #includesys/types.h #includesys/wait.h #includefcntl.h #includeunistd.husing namespace std;void Adjust(int *a, int n, int i) {int x a[i];for(int k i1; k n; k k1){if(k1 n a[k] a[k1])k;if(a[k] x){a[i] a[k];i k;}else{break;}}a[i] x; }void MakeHeap(int *a, int n) {for(int i n/2;i 0;--i){Adjust(a, n, i);} }void HeapSort(int *a,int n,int k,int *ans) {int mn-k;for(int i n; i m; i--){swap(a[1], a[i]);Adjust(a, i-1, 1);}*ans a[m1]; }int main(int argc, char* argv[]) {int n;const int MAXN 1024;scanf(%d, n);int a[MAXN] {0};for(int i 1; i n; i){scanf(%d, a[i]);}int k;scanf(%d, k);if(k n) k n;MakeHeap(a, n);int ans;HeapSort(a, n, k, ans);printf(ans%d\n, ans);return 0; } 测试结果 解法 5 维护一个大小为k的小顶堆对于数组中的每一个元素判断与堆顶的大小若堆顶较大则不管否则弹出堆顶将当前值插入到堆中。时间复杂度O(4knlogk) 实现程序 #includecstdio #includecstringusing namespace std;void Adjust(int *a,int n,int i) {int xa[i];for(int ki1;kn;k1){if(k1n a[k]a[k1])k;if(a[k]x){a[i]a[k];ik;}else break;}a[i]x; } void MakeHeap(int *a,int n) {for(int in/2;i0;--i){Adjust(a,n,i);} } int KthNumber(int *a,int n,int k) { // int *bnew int[k];int b[1024];for(int i1;ik;i){b[i]a[i];}MakeHeap(b,k);for(int ik1;in;i){if(a[i]b[1]){b[1]a[i];Adjust(b,k,1);}}return b[1]; }int main() {int n,k;printf(n); scanf(%d,n);printf(k); scanf(%d,k); // int* a new int[n];int a[1024]{0};for(int i1;in;i)scanf(%d,a[i]);printf(%d\n,KthNumber(a,n,k)); // delete a;return 0; } 测试结果 解法 6: 利用Hash保存数组中元素出现的次数利用计数排序的思想线性从大到小扫描中得到结果时间复杂度为O(n)
http://www.zqtcl.cn/news/521728/

相关文章:

  • 用php做视频网站有哪些十大免费logo设计
  • 网站建设对于网络营销的意义微信购物商城
  • 基于个性化推荐的电商网站设计与实现网站 用户体验的重要性
  • 怎么用ajax做电商网站企业网查询是什么
  • 海淀企业网站建设张店学校网站建设公司
  • 专业微网站开发做购物网站怎么赚钱
  • 怎样做酒店网站ppt什么是企业网络营销平台
  • 科技部网站改版方案济南众筹网站建设
  • 中国城乡与住房建设部网站电子商务公司名字推荐
  • 设计参考网站有哪些wordpress 支付宝免签
  • 网站关键词排名优化应该怎么做外包加工网缝纫机外放加工活
  • 电影网站建设模板从传播的角度
  • 北京建网站的公司广州冼村和猎德村哪个最有钱
  • 成都网站建设有限公司济南j建设网
  • 一家网站建设公司需要什么资质互联网网站模块
  • 网站开发php支付接口网站平台建设缴纳什么税
  • 百度文库推广网站庆云网站seo
  • 全网通网站wordpress 按点击调用热门文章
  • 添加网站栏目的步骤网站需求分析怎么做
  • 做网站用那一种语言最好武邑网站建设价格
  • 哈尔滨网站制作招聘互动的网站
  • 专业网站建设品牌网站建设基础课件
  • 自学网站编程网站建设银行北京冬奥会纪念币发行时间
  • 个人网站备案需要盖章吗做网站用什么颜色好
  • 在线制作论坛网站做网站开发团队
  • 2017年网站建设工作总结dhru商城网站建设
  • 建设网站需要申请深圳的网站建设的公司
  • 教育类的网站案例门户网站建设推广
  • 网站建设公司哪家比较好外贸网站建设公司价格
  • 做网站大概价格网站备案填写