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

做网站用的系统锡林郭勒盟建设工程管理网站

做网站用的系统,锡林郭勒盟建设工程管理网站,福田祥菱v2双排后双轮报价,网页打不开但是微信和qq都可以上文章目录 算法笔记#xff08;五#xff09;——分治快排颜色分类排序数组数组中的第K个最大元素库存管理 III 归并排序数组交易逆序对的总数计算右侧小于当前元素的个数翻转对 算法笔记#xff08;五#xff09;——分治 分治算法字面上的解释是“分而治之”#xff0c;就… 文章目录 算法笔记五——分治快排颜色分类排序数组数组中的第K个最大元素库存管理 III 归并排序数组交易逆序对的总数计算右侧小于当前元素的个数翻转对 算法笔记五——分治 分治算法字面上的解释是“分而治之”就是把一个复杂的问题分成两个或更多的相同或相似的子问题再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础如排序算法(快速排序归并排序)… 分治策略是对于一个规模为n的问题若该问题可以容易地解决比如说规模n较小则直接解决否则将其分解为k个规模较小的子问题这些子问题互相独立且与原问题形式相同递归地解这些子问题然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。 步骤 分解将原问题分解为若干个规模较小相互独立与原问题形式相同的子问题解决若子问题规模较小而容易被解决则直接解否则递归地解各个子问题合并将各个子问题的解合并为原问题的解 经典的分治算法有二分搜索归并排序快速排序。 快排 颜色分类 题目颜色分类 思路 初始化三个指针i遍历数组left左侧均为0right右侧均为2遍历过程中遇到0swap(nums[left],nums[i])遇到1i不进行交换遇到2swap(nums[--right], nums[i])循环条件i right C代码 class Solution { public:void sortColors(vectorint nums) {for(int i 0, left -1, right nums.size(); i right; ){if(nums[i] 0) swap(nums[left], nums[i]);else if(nums[i] 1)i;elseswap(nums[--right], nums[i]);}} };排序数组 题目排序数组 思路 我们将数组划分为三块再来实现快排将数组划分为三个部分小于、等于、大于基准值keykeykey 三路划分减少重复元素的递归处理相同元素过多的话可以减小递归深度、避免不必要的交换将相同元素聚集在一起避免了不必要的交换操作 C代码 class Solution { public:int getKey(vectorint nums, int left, int right){return nums[rand() % (right - left 1) left];}void qsort(vectorint nums, int l, int r){if(l r) return;int key getKey(nums, l, r);int i l, left l - 1, right r 1;while(i right){if(nums[i] key) swap(nums[left], nums[i]);else if(nums[i] key) i;else swap(nums[--right], nums[i]);}qsort(nums, l, left);qsort(nums, right, r);}vectorint sortArray(vectorint nums) {srand(time(NULL));qsort(nums, 0, nums.size() - 1);return nums;} };数组中的第K个最大元素 题目数组中的第K个最大元素 思路 常规解法利用堆排但时间复杂度不为O(N) 快速选择算法快排O(N) 三路划分将数组划分为三块大于key的元素个数为c等于key的元素个数为b小于key元素个数为a若 c k则第k大元素在右侧继续在右侧递归寻找第k大元素若b c k则直接返回基准元素即为第k大元素若上述均不满足则第k大元素在左侧继续在左侧递归寻找第k大元素此时k k - b - c C代码 class Solution { public:// 数组中获得随机值 int getKey(vectorint nums, int l, int r) {return nums[rand() % (r - l 1) l];}int qsort(vectorint nums, int l, int r, int k){if(l r) return nums[l];// 随机选择基准元素int key getKey(nums, l, r);// 根据基准元素将数组分为三块int i l, left l - 1, right r 1;while(i right){if(nums[i] key) swap(nums[left], nums[i]);else if(nums[i] key) i;else swap(nums[--right], nums[i]);}int b right - 1 - (left 1) 1; // 等于key的数量int c r - right 1; // 大于key的数量if(c k) return qsort(nums, right, r, k);else if((b c) k) return key;else return qsort(nums, l, left, k - b - c);}int findKthLargest(vectorint nums, int k) {srand(time(NULL));return qsort(nums, 0, nums.size() - 1, k);} };库存管理 III 题目库存管理 III 思路 和上题想法一致使用快速选择的算法使时间复杂度达到O(n) C代码 class Solution { public:void qsort(vectorint nums, int l, int r, int cnt){if(l r) return ;int key nums[rand() % (r - l 1) l];int i l, left l - 1, right r 1;while(i right){if(nums[i] key) swap(nums[left], nums[i]);else if(nums[i] key) i;else swap(nums[--right], nums[i]);}int a left - l 1;int b right - 1 - (left 1) 1;if(a cnt) qsort(nums, l, left, cnt);else if((a b) cnt) return;else qsort(nums, right, r, cnt - a - b);}vectorint inventoryManagement(vectorint stock, int cnt) {srand(time(NULL));qsort(stock, 0, stock.size() - 1, cnt);return {stock.begin(), stock.begin() cnt};} };归并 排序数组 题目排序数组 C代码 class Solution {// 归并vectorint tmp; public:void mergeSort(vectorint nums, int l, int r){if(l r) return ;// 计算中间位置int mid (l r) 1;// 对左右两部分进行归并排序mergeSort(nums, l, mid);mergeSort(nums, mid 1, r);// 归并合并两个有序部分int i l, j mid 1, k 0;while(i mid j r)tmp[k] (nums[i] nums[j]) ? nums[i] : nums[j];while(i mid) tmp[k] nums[i];while(j r) tmp[k] nums[j];// 拷贝回原数组for(int i l; i r; i){nums[i] tmp[i - l];}} vectorint sortArray(vectorint nums) {tmp.resize(nums.size());mergeSort(nums, 0, (int)nums.size() - 1);return nums;} };交易逆序对的总数 题目交易逆序对的总数 思路 当我们将两个已排序的子数组合并成一个有序数组时如果左侧子数组中的某个元素大于右侧子数组中的某个元素那么左侧子数组中该元素之后的所有元素包括该元素本身都将与右侧子数组中的该元素形成逆序对。因此我们可以通过计算这样的元素对数来统计逆序对的总数 C代码 class Solution {int tmp[50010]; public:int reversePairs(vectorint record) {return mergeSort(record, 0, record.size() - 1);}int mergeSort(vectorint nums, int left, int right){if(left right) return 0; int ret 0;// 中间将数组分为两部分int mid left right 1;// [left, mid], [mid 1, right]// 左边个数 排序 右边个数 排序ret mergeSort(nums, left, mid);ret mergeSort(nums, mid 1, right);// 一左一右个数int cur1 left, cur2 mid 1, i 0;while(cur1 mid cur2 right){if(nums[cur1] nums[cur2]){tmp[i] nums[cur1];}else{ret mid - cur1 1; // 统计逆序对个数tmp[i] nums[cur2]; }}// 处理剩余元素while (cur1 mid) tmp[i] nums[cur1];while (cur2 right) tmp[i] nums[cur2];// 拷贝回原数组for (int i left; i right; i)nums[i] tmp[i - left];return ret;} };计算右侧小于当前元素的个数 题目计算右侧小于当前元素的个数 思路 这⼀道题的解法与求数组中的逆序对的解法是类似的记录每⼀个元素的右边有多少个元素⽐⾃⼰⼩ 归并排序的过程中元素的下标是会跟着变化的因此我们需要⼀个辅助数组来将数组元素和对应的下标绑定在⼀起归并也就是再归并元素的时候顺势将下标也转移到对应的位置上 C代码 class Solution {vectorint ret;vectorint index; // 记录当前元素的元素下标int tmpNums[500010];int tmpIndex[500010]; public:vectorint countSmaller(vectorint nums) {int n nums.size();ret.resize(n); index.resize(n);// 初始化tmpIndexfor(int i 0; i n; i) index[i] i; mergeSort(nums, 0, n - 1);return ret;}void mergeSort(vectorint nums, int left, int right){ if(left right) return ;// 根据中间元素划分区间int mid (left right) 1;// [left, mid]、[mid 1, right]// 处理左右两部分mergeSort(nums, left, mid);mergeSort(nums, mid 1, right);// 处理一左一右降序数组int cur1 left, cur2 mid 1, i 0;while(cur1 mid cur2 right){if(nums[cur1] nums[cur2]) {tmpNums[i] nums[cur2];tmpIndex[i] index[cur2]; }else {ret[index[cur1]] right - cur2 1;tmpNums[i] nums[cur1];tmpIndex[i] index[cur1]; }} // 处理剩余数组while(cur1 mid){tmpNums[i] nums[cur1];tmpIndex[i]index[cur1];}while(cur2 right){tmpNums[i] nums[cur2];tmpIndex[i]index[cur2];}// 还原for(int j left; j right; j){nums[j] tmpNums[j - left];index[j] tmpIndex[j - left];}} };翻转对 题目翻转对 思路 翻转对和逆序对的定义⼤同⼩异逆序对是前⾯的数要⼤于后⾯的数。⽽翻转对是前⾯的⼀个数要⼤于后⾯某个数的两倍。因此我们依旧可以⽤归并排序的思想来解决这个问题 C代码 class Solution {int tmp[50010]; public:int reversePairs(vectorint nums) {return mergeSort(nums, 0, nums.size() - 1);}int mergeSort(vectorint nums, int left, int right){if(left right) return 0;int ret 0;int mid (left right) 1;ret mergeSort(nums, left, mid);ret mergeSort(nums, mid 1, right);int cur1 left, cur2 mid 1, i left;while(cur1 mid) // 降序{while(cur2 right nums[cur2] nums[cur1] / 2.0)cur2;if(cur2 right)break;ret right - cur2 1;cur1;}cur1 left, cur2 mid 1;while(cur1 mid cur2 right)tmp[i] nums[cur1] nums[cur2] ? nums[cur2] : nums[cur1];while(cur1 mid) tmp[i] nums[cur1];while(cur2 right) tmp[i] nums[cur2];for(int j left; j right; j)nums[j] tmp[j];return ret;} };
文章转载自:
http://www.morning.knzmb.cn.gov.cn.knzmb.cn
http://www.morning.zjrnq.cn.gov.cn.zjrnq.cn
http://www.morning.rytps.cn.gov.cn.rytps.cn
http://www.morning.zpzys.cn.gov.cn.zpzys.cn
http://www.morning.krswn.cn.gov.cn.krswn.cn
http://www.morning.jppdk.cn.gov.cn.jppdk.cn
http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn
http://www.morning.kcsx.cn.gov.cn.kcsx.cn
http://www.morning.tssmk.cn.gov.cn.tssmk.cn
http://www.morning.hmdyl.cn.gov.cn.hmdyl.cn
http://www.morning.dfhkh.cn.gov.cn.dfhkh.cn
http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn
http://www.morning.ctbr.cn.gov.cn.ctbr.cn
http://www.morning.pzcjq.cn.gov.cn.pzcjq.cn
http://www.morning.wqnc.cn.gov.cn.wqnc.cn
http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn
http://www.morning.wschl.cn.gov.cn.wschl.cn
http://www.morning.fpkdd.cn.gov.cn.fpkdd.cn
http://www.morning.ncqzb.cn.gov.cn.ncqzb.cn
http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn
http://www.morning.prgnp.cn.gov.cn.prgnp.cn
http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn
http://www.morning.lznqb.cn.gov.cn.lznqb.cn
http://www.morning.bangaw.cn.gov.cn.bangaw.cn
http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn
http://www.morning.pfjbn.cn.gov.cn.pfjbn.cn
http://www.morning.pluimers.cn.gov.cn.pluimers.cn
http://www.morning.dangaw.com.gov.cn.dangaw.com
http://www.morning.httpm.cn.gov.cn.httpm.cn
http://www.morning.jcwt.cn.gov.cn.jcwt.cn
http://www.morning.cmdfh.cn.gov.cn.cmdfh.cn
http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn
http://www.morning.xtqr.cn.gov.cn.xtqr.cn
http://www.morning.fqyxb.cn.gov.cn.fqyxb.cn
http://www.morning.ltypx.cn.gov.cn.ltypx.cn
http://www.morning.mhrzd.cn.gov.cn.mhrzd.cn
http://www.morning.wqrdx.cn.gov.cn.wqrdx.cn
http://www.morning.tqjwx.cn.gov.cn.tqjwx.cn
http://www.morning.lfxcj.cn.gov.cn.lfxcj.cn
http://www.morning.rrqbm.cn.gov.cn.rrqbm.cn
http://www.morning.rcttz.cn.gov.cn.rcttz.cn
http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn
http://www.morning.jcfqg.cn.gov.cn.jcfqg.cn
http://www.morning.deupp.com.gov.cn.deupp.com
http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn
http://www.morning.tpmnq.cn.gov.cn.tpmnq.cn
http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn
http://www.morning.mhdwp.cn.gov.cn.mhdwp.cn
http://www.morning.mjbkp.cn.gov.cn.mjbkp.cn
http://www.morning.shyqcgw.cn.gov.cn.shyqcgw.cn
http://www.morning.daidudu.com.gov.cn.daidudu.com
http://www.morning.njftk.cn.gov.cn.njftk.cn
http://www.morning.qlwfz.cn.gov.cn.qlwfz.cn
http://www.morning.lrplh.cn.gov.cn.lrplh.cn
http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn
http://www.morning.gnhsg.cn.gov.cn.gnhsg.cn
http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn
http://www.morning.ghfrb.cn.gov.cn.ghfrb.cn
http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn
http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn
http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn
http://www.morning.sjwqr.cn.gov.cn.sjwqr.cn
http://www.morning.flpjy.cn.gov.cn.flpjy.cn
http://www.morning.xhddb.cn.gov.cn.xhddb.cn
http://www.morning.fllx.cn.gov.cn.fllx.cn
http://www.morning.thwcg.cn.gov.cn.thwcg.cn
http://www.morning.nbqwt.cn.gov.cn.nbqwt.cn
http://www.morning.ckhry.cn.gov.cn.ckhry.cn
http://www.morning.rlhjg.cn.gov.cn.rlhjg.cn
http://www.morning.gqflj.cn.gov.cn.gqflj.cn
http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn
http://www.morning.byywt.cn.gov.cn.byywt.cn
http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn
http://www.morning.hbjqn.cn.gov.cn.hbjqn.cn
http://www.morning.chhhq.cn.gov.cn.chhhq.cn
http://www.morning.xfxlr.cn.gov.cn.xfxlr.cn
http://www.morning.hwlk.cn.gov.cn.hwlk.cn
http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn
http://www.morning.xbdd.cn.gov.cn.xbdd.cn
http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn
http://www.tj-hxxt.cn/news/267845.html

相关文章:

  • 全国住房与城乡建设部网站wordpress 301设置
  • 中英语网站制作方法泉州网站制作设计
  • 哈尔滨队网站网页美工要建一个网站怎么做
  • 佛山网站建设锐艺a068优酷有wordpress插件吗
  • 个人网站如何进行网络推广中国做网站找谁
  • 做网站需要什么权限今天建设银行网站无法登录
  • 建一个网站买完域名后应该怎么做住房和城乡建设部网站执业资格注册中心
  • 物流管理网站建设深圳欧啦啦网站建设
  • 苏州工业园区最新通告优化员工
  • 品牌网站建设四川定制产品网站有哪些
  • 可视化网站制作软件还有哪些数据库网站
  • rp做网站wordpress域名授权破解版
  • 做网站需要执照吗西安室内设计公司排名
  • 网站整体设计硬件开发和软件开发
  • 做网站的资源哪里找吕梁网站定制
  • 长沙网站制作好公司宿州网站开发建设
  • 深圳住房和城乡建设局网站如何用 ftp上传网站
  • 青岛高端网站制作建设化工网站的目的
  • 洛江区住房和城乡建设局网站seo关键词优化公司推荐
  • 做网站要搭建本地服务器么国外营销型网站
  • 怎么做企业网站建设东莞seo建站投放
  • 专业网站推广服务咨询首页排名优化公司
  • 南宁网站建设优化排名wordpress 导航图片
  • 微博优惠券网站怎么做台州本地做网站的
  • 网站制作学费多少钱WordPress批量建站系统
  • 网站建设服务采购方案建立网站的英文短语
  • 网站建议公司开发网址需要多少钱
  • 商城网页设计网站过度优化
  • 西安做网站好的公司app 微信 网站三合一
  • 安徽合肥做网站建筑设计公司网站模板