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

爱用系统的设计理念网站的优化从哪里进行

爱用系统的设计理念,网站的优化从哪里进行,建设网站是要先建站在备案么,企业网站建设大概多少钱目录 1--归并排序 2--小和问题 3--逆序对问题 1--归并排序 归并排序的核心思想&#xff1a;将一个无序的序列归并排序为一个有序的系列&#xff1b;通过递归将无序的序列二分&#xff0c;从底层开始将二分的序列归并排序为有序序列&#xff1b; #include <iostream> #…

目录

1--归并排序

2--小和问题

3--逆序对问题


1--归并排序

        归并排序的核心思想:将一个无序的序列归并排序为一个有序的系列;通过递归将无序的序列二分,从底层开始将二分的序列归并排序为有序序列;

#include <iostream>
#include <vector>class Solution{
public:std::vector<int> Merge_Sort(std::vector<int> arr){if(arr.size() <= 1) return arr;split(arr, 0, arr.size() - 1);return arr;}// 二分void split(std::vector<int> &arr, int l, int r){if(l == r) return;int mid = l + (r - l) / 2;split(arr, l, mid);split(arr, mid+1, r);// 归并merge(arr, l, mid, mid+1, r);}void merge(std::vector<int> &arr, int l1, int r1, int l2, int r2){std::vector<int> res;int i = l1, j = l2;while(i <= r1 && j <= r2){if (arr[i] < arr[j]){res.push_back(arr[i]);i++;}else{res.push_back(arr[j]);j++;}}while(i <= r1){res.push_back(arr[i]);i++;}while(j <= r2){res.push_back(arr[j]);j++;}for(int i = 0, j = l1; j <= r2; i++, j++){arr[j] = res[i];}}
};int main(){std::vector<int> input = {1, 3, 4, 2, 5};Solution S1;std::vector<int> res = S1.Merge_Sort(input);for(int num : res) std::cout << num << " ";return 0;
}

2--小和问题

        在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和,请编码实现求解一个数组的小和;

        实例,给定数组 [1, 3, 4, 2, 5],1 左边比 1 小的数,没有;3 左边比 3 小的数, 为 1;4 左边比 4 小的数, 为 1 和 3;2 左边比 2 小的数,为 1;5 左边比 5 小的数,为 1, 3, 4 和 2;因此数组的小数和为:1 + (1+3) + (1) + (1+3+4+2) = 16;

主要思路:

        在归并排序两两比较两个数组的元素时,就确定对应的小数和;具体做法是,分析当前数是另一个数组中多少个数的小数,即当前数多少次被用于计算小数和;

#include <iostream>
#include <vector>class Solution{
public:int Merge_Sort(std::vector<int> arr){if(arr.size() <= 1) return 0;int sum = split(arr, 0, arr.size() - 1);return sum;}// 二分int split(std::vector<int> &arr, int l, int r){if(l == r) return 0;int mid = l + (r - l) / 2;int count1 = split(arr, l, mid);int count2 = split(arr, mid+1, r);int count3 = merge(arr, l, mid, mid+1, r);// 归并return count1 + count2 + count3;}int merge(std::vector<int> &arr, int l1, int r1, int l2, int r2){int sum = 0;std::vector<int> res;int i = l1, j = l2;while(i <= r1 && j <= r2){if (arr[i] < arr[j]){// 对于 arr[j, r2] 的数都会大于 arr[i],因此它们的小数和都包含arr[i]sum += (r2 - j + 1) * arr[i];res.push_back(arr[i]);i++;}else{res.push_back(arr[j]);j++;}}while(i <= r1){res.push_back(arr[i]);i++;}while(j <= r2){res.push_back(arr[j]);j++;}for(int i = 0, j = l1; j <= r2; i++, j++){arr[j] = res[i];}return sum;}
};int main(){std::vector<int> input = {1, 3, 4, 2, 5};Solution S1;int res = S1.Merge_Sort(input);std::cout << res << " " << std::endl;return 0;
}

3--逆序对问题

主要思路:

        在归并排序两两比较两个数组的元素时,就确定对应的逆序对;具体做法是,分析当前数(arr2)在另一个数组(arr1)中有多少个逆序数

#include <iostream>
#include <vector>class Solution{
public:int Merge_Sort(std::vector<int> arr){if(arr.size() <= 1) return 0;int sum = split(arr, 0, arr.size() - 1);return sum;}// 二分int split(std::vector<int> &arr, int l, int r){if(l == r) return 0;int mid = l + (r - l) / 2;int count1 = split(arr, l, mid);int count2 = split(arr, mid+1, r);int count3 = merge(arr, l, mid, mid+1, r);// 归并return count1 + count2 + count3;}int merge(std::vector<int> &arr, int l1, int r1, int l2, int r2){int sum = 0;std::vector<int> res;int i = l1, j = l2;while(i <= r1 && j <= r2){if (arr[i] > arr[j]){// 对于 arr[j, r2] 的数都会大于 arr[i],因此它们的小数和都包含arr[i]sum += (r1 - i + 1);res.push_back(arr[j]);j++;}else{res.push_back(arr[i]);i++;}}while(i <= r1){res.push_back(arr[i]);i++;}while(j <= r2){res.push_back(arr[j]);j++;}for(int i = 0, j = l1; j <= r2; i++, j++){arr[j] = res[i];}return sum;}
};int main(){std::vector<int> input = {7, 5, 6, 4};Solution S1;int res = S1.Merge_Sort(input);std::cout << res << " " << std::endl;return 0;
}

http://www.zhongyajixie.com/news/17484.html

相关文章:

  • 大丰专业做网站的公司百度云app
  • 云服务器 能用来做网站吗免费拓客软件哪个好用
  • 建立网站的主要方式推广优化网站
  • php网站模板怎么修改2023年9月疫情又开始了吗
  • 北京网站制作的流程搜索引擎营销的6种方式
  • 湖北微网站建设电话天津网站排名提升
  • linux做网站教程餐饮培训
  • 网页游戏源码购买seo教学网seo
  • 杭州做网站电话国外网站制作
  • wordpress mac 中文好的seo网站
  • 合肥企业网站建设工作室优化课程体系
  • 怎么用电脑windows做网站买链接官网
  • 西安营销型网站建设班级优化大师app下载
  • 哪里可以做免费的物流网站优化网站推广
  • 东莞做网站卓诚资源最多的磁力搜索引擎
  • 网站域名跳转是怎么做的惠州seo关键词推广
  • 佛山做网站有哪几家保定百度推广优化排名
  • 网站展示模板免费下载万网创始人
  • 网站建设论团东莞网站快速排名提升
  • 现在从事网站开发如何seo搜索引擎优化内容
  • 荆州网站建设泾县网站seo优化排名
  • 成人用品网站开发今日国际新闻头条15条
  • 做网站免费吗网络营销到底是个啥
  • 移动网站设计seo的优化步骤
  • 河间做网站的电话营销型网站的类型
  • WordPress显示403国内好的seo网站
  • 常用于制作网页的软件百度广告优化师
  • 做调查问卷的网站可靠吗花生壳免费域名注册
  • 政府网站平台建设网站seo关键词
  • WordPress设置二级域名泰州百度关键词优化