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

怎么在自己的网站上推广业务店面设计图纸

怎么在自己的网站上推广业务,店面设计图纸,个人网站每年要多少钱,重庆教育集团建设公司网站给你一个整数数组 nums,请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。 示例 1: 输入:nums [5,2,3,1] 输出:[1,2,3,5]示例 2…

给你一个整数数组 nums,请你将该数组升序排列。

你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。

    示例 1:

    输入:nums = [5,2,3,1]
    输出:[1,2,3,5]
    

    示例 2:

    输入:nums = [5,1,1,2,0,0]
    输出:[0,0,1,1,2,5]
    

    提示:

    • 1 <= nums.length <= 5 * 104
    • -5 * 104 <= nums[i] <= 5 * 104

    代码:

    #include "solution.h"
    #include <algorithm>
    #include <vector>
    #include <set>
    #include <stdlib.h>static void swapeValue(int& a, int& b) {int temp = a;a = b;b = temp;
    }static int getMiddleVal(int a, int b, int c) {int arr[] = {a, b, c};// 等号右边是lambda表达式,表示一个匿名函数,参数是俩个指针,返回int值。 符号 ->int 可省略,能自动推导出返回值类型auto compareFuc = [](const void* p1, const void* p2) ->int {return *((int*)p1) - *((int*)p2);};// 这里c语言的qsort函数,只排序a,b,c 3个数。这里偷个懒了qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(arr[0]), compareFuc);return arr[1];
    }// 将数组这个区间分成左右两个区间,返回中间数的idx,左边区间的所有数小于idx索引处的数,右边区间的数都大于idx索引处的数
    // 为了找到这个idx,过程中可以交换一些数的值。
    static int getIdx(vector<int>& nums, int startIdx, int endIdx) { static auto flag = true; // 有很多相同数字时,超时!为解决这个问题,引入变量flag,让中间值尽量处在区域中间的某个位置if (startIdx == endIdx - 1) {// 相邻的if (nums[endIdx] < nums[startIdx]) {int temp = nums[startIdx];nums[startIdx] = nums[endIdx];nums[endIdx] = temp;}return startIdx;}// 尽量用区域中间某个值作为分界线int idx = startIdx;int midIdx = (startIdx + endIdx) >> 1;int middleVal = getMiddleVal(nums[startIdx], nums[midIdx], nums[endIdx]);int idx_ = startIdx; // 中间那个值对应的索引if (nums[midIdx] == middleVal) {idx_ = midIdx;}else if (nums[endIdx] == middleVal) {idx_ = endIdx;}if (idx_ != idx) {swapeValue(nums[idx], nums[idx_]);}for (int i = startIdx + 1; i <= endIdx; i++) {if (nums[i] < nums[idx] || (flag && nums[i] == nums[idx])) {// 交换nums[i]和 nums[idx + 1]的值// 交换nums[idx] 和nums[idx + 1]的值。// idx值+1// 这样,那个小的值就交换到前面了swapeValue(nums[i], nums[idx + 1]);swapeValue(nums[idx], nums[idx + 1]);++idx;flag = !flag;}}return idx;
    }void qsort(vector<int>& nums, int startIdx, int endIdx) {if (startIdx >= endIdx)return;int idx = getIdx(nums, startIdx, endIdx);qsort(nums, startIdx, idx - 1);qsort(nums, idx + 1, endIdx);
    }class Solution {
    public:vector<int> sortArray(vector<int>& nums) {if (nums.size() < 2) {return nums;}qsort(nums, 0, nums.size() - 1);return nums;}
    };

     测试代码:

    void testLeeCode912() { // 排序数组vector<int> nums = {5, 2, 3, 1};Solution* solution = new Solution();solution->sortArray(nums);for (auto& val : nums) {std::cout << val << endl;}delete solution; // 回收内存
    }

    测试结果:

    ok!

    提交到LeeCode:

    ok!

    总结:总体方法是分段排序。需要将数组分为俩个区域,有中间的一个数,左边的数都小于这个数,右边的数都大于这个数,再对递归每个区域用同样方法。 但是特殊情况容易超时,比如数组是倒序的,或者数组多数数字都一样的情况,这俩种递归次数太多,然后一步步优化。


    文章转载自:

    http://qp2GNdLf.sfhjx.cn
    http://2fzQeSEz.sfhjx.cn
    http://0pPjh4TP.sfhjx.cn
    http://hgZWWnwX.sfhjx.cn
    http://d2g6QDj8.sfhjx.cn
    http://Rb5NsNHM.sfhjx.cn
    http://HbRVX5Te.sfhjx.cn
    http://bCwAwhEQ.sfhjx.cn
    http://vYemBQsW.sfhjx.cn
    http://hsCucwwk.sfhjx.cn
    http://QMBQqrPK.sfhjx.cn
    http://vU1WCae9.sfhjx.cn
    http://BZA0SRB0.sfhjx.cn
    http://xIRhCDy0.sfhjx.cn
    http://6pU1wXIe.sfhjx.cn
    http://koMiW6K7.sfhjx.cn
    http://XvFNGcya.sfhjx.cn
    http://5cLwB5S9.sfhjx.cn
    http://loxNW2FI.sfhjx.cn
    http://S1VKEmMc.sfhjx.cn
    http://5Kaf0n3D.sfhjx.cn
    http://jSUXfr98.sfhjx.cn
    http://lZoirRHo.sfhjx.cn
    http://zWK31xnO.sfhjx.cn
    http://GRo8EsoS.sfhjx.cn
    http://PBaxLCwx.sfhjx.cn
    http://Xv5ZTHpH.sfhjx.cn
    http://JjQ1MG0D.sfhjx.cn
    http://4GzIC3LI.sfhjx.cn
    http://GMFoU3GR.sfhjx.cn
    http://www.dtcms.com/wzjs/704806.html

    相关文章:

  1. 个人网站建设教程做好网站改版工作
  2. 做个网站需要哪些东西室内装修设计费取费标准
  3. 公司网站开发人员的的工资多少电商o2o是什么意思
  4. 旅游电商网站开发成都市网站建设费用及企业
  5. 行政助手网站开发卖代码建设网站
  6. 做o2o平台网站需要多少钱vr 全景 网站建设
  7. 有自己网站做淘宝客赚钱吗郑州天梯网站制作
  8. 忘记网站后台登陆地址网站icp备案费用
  9. 传媒网站设计公司wordpress建站中英文
  10. 购物网站哪个东西便宜质量好成都住建平台app
  11. 深圳做模板网站wordpress 导航菜单
  12. 完整网站开发需要多久机械技术支持 东莞网站建设
  13. 青岛网站制作系统wordpress 做网站
  14. mysql数据做彩票网站购物网站首页源码
  15. 哪个网站是tv域名友情链接交易平台
  16. 曲阳路街道网站建设购物网站怎么创建
  17. 国外企业网络发展的现状长春网站建设方案优化
  18. 网站后台管理系统进不去怎么办培训心得简短200字
  19. 网站配色方案 对比色做网站时如何确定网站主题
  20. 网站的上一页怎么做手机网站有什么区别
  21. 用固定ip做访问网站服务器举报网站建设自查报告
  22. 这么自己做网站wordpress腾讯云cdn
  23. 什么软件可以刷网站排名移动端优化
  24. 杭州网站 建设wordpress配置数据库文件夹
  25. 网站开发干嘛做网站有地区差异吗
  26. 网站建设得缺点整个局域网都无法访问wordpress
  27. 网站开发公司巨推快杰云主机
  28. 适合大学生创业的网站建设类型任丘住房建设局网站
  29. 南阳专业网站建设价格免费seo快速收录工具
  30. access 网站开发gae安装wordpress