首页 > 其他分享 >一种使用树结构优化switch语句的方法

一种使用树结构优化switch语句的方法

时间:2024-08-25 17:54:16浏览次数:10  
标签:语句 树结构 int TODO else switch 优化

介绍

在日常 装B 写代码中会经常用到if else if语句如:

if(1){
		
	}
	else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}else if(1){
		//TODO
	}

非常的麻烦,而且慢,我们可以用二分的思想去查找,如:

#include <iostream>
using namespace std;
int main() {
	int n;
	cin>>n;
	if(n<50){
		if(n<25){
			if(n<15){
				cout<<"<15";
			}
			else{
				cout<<">15";
			}
		}
		else{
			if(n>35){
				cout<<"666";
			}
			else{
				cout<<"666";
			}
		}
	}
	else{
		if(n>75){
			if(n>85){
				cout<<"<85";
			}
			else{
				cout<<">85";
			}
		}
		else{
			if(n>15){
				cout<<"666";
			}
			else{
				cout<<"666";
			}
		}
	}
	return 0;
}

这样我们就可以在\(O(logn)\)的时间复杂度去执行有n种可能的代码。

swith语句的条件非数字或没有固定范围时的解决方法

如果是字符串的话可以像字典树一样遍历到最后。这样也有优化。

思路核心

就是用二分的思想进行优化,减少判断,如果有其他思路欢迎评论!感谢!!!

标签:语句,树结构,int,TODO,else,switch,优化
From: https://www.cnblogs.com/mcr130102/p/18379234

相关文章

  • C#入门(14)Switch语句
    前言先前我们已经学了if语句,知道了他有一个相似的兄弟Switch,那我们就以他们的区别来进入本节的学习。Switch和if都是用来控制程序的流程的条件语句,但是它们有一些区别。语法结构:Switch语句由一个或多个case标签和一个可选的默认标签组成,每个case标签后面是要执行的语句序列......
  • HeidiSQL中一些简单mysql语句的含义(二)
    一、排序#根据年龄进行降序排序select*fromstudentorderbyagedesc;#根据年龄进行升序排序select*fromstudentorderbyageasc;#给字段起别名,as可以省略selectnoas编号,nameas姓名,ageas年龄fromstudentorderbyageasc;#查找前五条select*fr......
  • Java 12 新特性—Switch 表达式
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • Java基础学习篇:switch条件语句进阶(最详细版)
    ......
  • 谷歌黑客语句常用语法
    谷歌黑客语句常用语法1.site用于显示目标地址的子域名如:site:baidu.com//可以显示baidu下的所有子域名2.intitle表示在网页标题中第一个出现的关键字网页一次只能搜索一个关键字如:intitle:百度3.allintitle在结果的标题中同时包含多个关键词如:allintitle:百度黑客4.i......
  • C++ 使用 using 声明语句放开基类的重载函数
    #include<functional>#include<string>#include<iostream>#include<vector>#include<memory>#include<set>#include<map>usingnamespacestd;namespace{classAnimal{public:stringGe......
  • 流程控制语句
    流程控制语句分类顺序结构顺序结构概述按照代码的编写顺序自上而下执行选择结构if选择语句`语句定义格式1`:if(关系表达式){语句体;}`语句定义格式2`:if(关系表达式){语句体1;......
  • 【openwrt-21.02】openwrt-21.02 T750 switch划分VLAN之后WAN口MAC地址和br-lan相同问
    Openwrt版本NAME="OpenWrt"VERSION="21.02-SNAPSHOT"ID="openwrt"ID_LIKE="ledeopenwrt"PRETTY_NAME="OpenWrt21.02-SNAPSHOT"VERSION_ID="21.02-snapshot"HOME_URL="https://openwrt.org/"BU......
  • SQL Server查找哪些执行慢的语句
    1、根据https://learn.microsoft.com/zh-cn/troubleshoot/sql/database-engine/performance/troubleshoot-slow-running-queries网址提供的脚本。SELECTreq.session_id,req.total_elapsed_timeASduration_ms,req.cpu_timeAScpu_time_ms,req.total_......
  • freeswitch 32秒自动挂断问题
    freeswitch32秒自动挂断问题说明:首次发表日期:2024-08-23参考:https://serverfault.com/questions/1008661/freeswitch-drops-calls-after-32-secondshttps://blog.csdn.net/qq_32110203/article/details/141126033https://stackoverflow.com/questions/73708045/freeswitc......