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

在线做ps是什么网站哈尔滨模板网站建设

在线做ps是什么网站,哈尔滨模板网站建设,南昌企业做网站设计,优秀个人网站1.排序 快排: 第一章 基础算法(一) - AcWing 如何调整范围 经典二分 递归结束条件;条件满足时,进行处理;递归左边,递归右边 分界点划分可以是l,r,(lr)/2,但是如果是选l,比如是1…

1.排序

快排:

第一章 基础算法(一) - AcWing

如何调整范围

经典二分

递归结束条件;条件满足时,进行处理;递归左边,递归右边

分界点划分可以是l,r,(l+r)/2,但是如果是选l,比如是1,2排序,i最后结束循环是1,然后最后递归也是sort(q,0,0)

其实有太多问题:>=和>的选择,要不要判断i<j,递归使用i,i-1还是j,j+1【前一个超时了】,先这样吧,想不通。。。。。?????

模版:

void sort(vector<int>&nums,int l,int r){//感觉情况有点多啊
    if(l>=r){
        return;
    }
    int i = l-1;
    int j = r+1;
    int x = nums[(l+r)/2];
    while(i<j){
        do{
            i++;
        }while(nums[i]<x);//不是<=,如果=x应该让他放在中间 
        do{
            j--;
        } while(nums[j]>x);//不是<=
        if(i<j) swap(nums[i],nums[j]);//必须i<j
    }//i>=j j,i
    sort(nums,l,i-1);
    sort(nums,i,r);
}
 

#include<iostream>
#include<algorithm>
using namespace std;// 5
// 3 1 2 4 5
//
// void sort(vector<int>&nums,int l,int r){//二分
//     if(l>=r){
//         return;
//     }//     int i = l;
//     int j = r;//两个指针
//     int x = nums[(l+r)/2];//避免死循环
//     cout<<"I:"<<i<<"j:"<<j<<endl<<"x"<<x;
//     while(i<j){//
//         while(nums[i]<=x){
//             i++;// 可能导致 i 越界
//         }
//         while(nums[j]>=x){
//             j--;// 可能导致 j 越界
//         }
//         swap(nums[i],nums[j]);// 交换后未移动指针
//     }//结束:i>=j
//     sort(nums,l,i-1);
//     sort(nums,i,r);// }
void sort(vector<int>&nums,int l,int r){//感觉情况有点多啊if(l>=r){return;}int i = l-1;int j = r+1;int x = nums[(l+r)/2];while(i<j){do{i++;}while(nums[i]<x);//不是<=,如果=x应该让他放在中间// do { i++; } while (nums[i] < x); do{j--;} while(nums[j]>x);//不是<=if(i<j) swap(nums[i],nums[j]);//必须i<j}//i>=j j,isort(nums,l,i-1);sort(nums,i,r);
}int main(){int num;cin>>num;vector<int>vec(num);for(int i=0;i<num;i++){cin>>vec[i];// cout<<vec[i];}sort(vec,0,num-1);//num-1for(int s:vec){cout<<s<<" ";}
}

冒泡排序:
每一次把max数放到最后一位

void bubble_sort(int q[], int n) {
    bool flag = true;
    while (flag) {
        flag = false;
        for (int i = 1; i < n; i++) {
            if (q[i] > q[i + 1]) {
                flag = true;
                int t = q[i];
                q[i] = q[i + 1];
                q[i + 1] = t;
            }
        }
    }
}

2、搜索插入位置【实际1h+】

刷题论 04|二分查找,你根本不需要背那么多模板_哔哩哔哩_bilibili

35. 搜索插入位置 - 力扣(LeetCode)

迷茫了5/7

---------------------------------------------

需要注意最好(l+r)/2用l+((r-l)>>2)代替,防止溢出

最优思路:刚开始没想到可以只是先找target,找不到位置就是l【自己举例子】

int findIndex1(vector<int>& nums, int l, int r, int target) {

        if (l > r) {//[l,r]大于和大于等于【1,3,5,6,target= 7,l>=r返回的是3而非4】,如果用【1,r】理论看的话,l是可以等于r的,没必要返回循环

            return l;

        }

        int m = l + ((r - l) >>2);

        if (nums[m] == target) {

            return m;

        } else if (nums[m] < target) {

            return findIndex1(nums, m + 1, r, target);

        } else {

            return findIndex1(nums, l, m - 1, target);

        }

    }

原来的想法是在每次二分查找中如果找不到target,直接找到 一侧小一侧大的那个位置,然后就不知道循环结束条件是什么了,确实也不需要了,不过自己考虑时问题挺多

考虑成了m-1小于target而m+1大于target【应该是m】

0前面插入和nums.size()-1后面插入的逻辑没考虑清楚

int findIndex(vector<int>& nums, int l, int r, int target) {// if (l > r) {// 当 l > r 时,说明 target 应插入到 l 的位置//    return l;}
//int m = l + (r - l) / 2;if (nums[m] == target) {return m; // 直接找到目标}// 检查是否满足插入条件:nums[m-1] < target < nums[m]if (m > 0 && nums[m-1] < target && nums[m] > target) {return m; // 插入到 m 的位置}// 处理边界情况(如插入到数组最左或最右)if (m == 0 && nums[m] > target) return 0;if (m == nums.size() - 1 && nums[m] < target) return m + 1;// 递归搜索左半部分或右半部分if (nums[m] < target) {return findIndex(nums, m + 1, r, target);} else {return findIndex(nums, l, m - 1, target);}}

 模版:简单二分,数组中不包含重复元素, 思考:定义是[l,r]闭区间,跳出循环条件:l > r,l / r = mid +-1;

12:25左右 

3.搜索二维矩阵

74. 搜索二维矩阵 - 力扣(LeetCode)


文章转载自:

http://CqSYScqy.mhfbp.cn
http://8BBy7Toh.mhfbp.cn
http://OIwhg4Oe.mhfbp.cn
http://MbhZaPkt.mhfbp.cn
http://g5LFKlDD.mhfbp.cn
http://95rjfYl9.mhfbp.cn
http://Mi3fnUqk.mhfbp.cn
http://p33uENZI.mhfbp.cn
http://tOwRUjsp.mhfbp.cn
http://JqFwcDU8.mhfbp.cn
http://GLIX0ldF.mhfbp.cn
http://yl8aMl9q.mhfbp.cn
http://nF5kkAFh.mhfbp.cn
http://YjnKlD4e.mhfbp.cn
http://U1T6bvBx.mhfbp.cn
http://0WLynrEk.mhfbp.cn
http://Sr3pEAUn.mhfbp.cn
http://T8MGs2Qn.mhfbp.cn
http://V54R1db0.mhfbp.cn
http://59yi08kZ.mhfbp.cn
http://iLy4xNiz.mhfbp.cn
http://8SFWFsmX.mhfbp.cn
http://QmP1E1pr.mhfbp.cn
http://p9W6N4iz.mhfbp.cn
http://uU39MtyH.mhfbp.cn
http://r04ktpgW.mhfbp.cn
http://tktjgxx6.mhfbp.cn
http://8omhCorF.mhfbp.cn
http://FdWGZ3Z3.mhfbp.cn
http://Q3pntvZE.mhfbp.cn
http://www.dtcms.com/wzjs/617974.html

相关文章:

  • 免费大数据网站网站导航栏按钮
  • 建设电影网站的教程飞言情做最好的小说网站
  • 南京网站a建设云世家微信小程序怎么做商城
  • 郴州市做网站上海网站建设中小型企业
  • 网站怎么进入后台管理后端开发和前端开发哪个工资高
  • 网站开发 技术问题网站下面的站长统计很逗
  • 不做百度了 百度做的网站重庆九龙坡营销型网站建设公司推荐
  • 昆明软件开发公司做门户网站的设计网站最重要的是要有良好的
  • 成都网站建设优化公司做网站属于什么行业
  • 卧龙区2015网站建设口碑做网站的数据库
  • 青岛做公司网站国际招聘人才网
  • 比较好的网站开发框架青岛网站开发学校
  • 内网怎么做网站昆山智能网站建设
  • 上线了 网站天津市工程建设交易管理中心网站
  • 主流门户网站有哪些兰溪建设网站
  • 繁体商城网站模板卡盟网站开发
  • 上海c网站建设电商网店开店全过程
  • 动易后台 网站统计调查 报表类型怎样使用wordpress投稿申请
  • php网站开发经理招聘免费咨询服务
  • 做爰动态视频网站哪个做问卷网站佣金高
  • 汉中市住房和城乡建设局网站wordpress 上传腾讯云
  • win2003 建设网站长沙网络推广哪家
  • 手机做任务网站有哪些google seo是什么啊
  • 工程建设监理网站建筑公司网站作用
  • 医院网站建设预算表威海建设信息网站
  • 做网站学生作业接外包的平台
  • 家居装修企业网站源码广州seo推广
  • 成都建站网站杭州网站建设培训班
  • 网站正在建设中 给你带来dw怎么做自我展示网站
  • 做网站彩票的代理好吗wordpress页面教程