for循环

浅谈程序优化

荒凉一梦 提交于 2020-01-22 19:15:24
   当初在学校实验室的时候,常常写一个算法,让程序跑着四处去晃荡一下回来,结果也就出来了。可工作后,算法效率似乎重要多了,毕竟得真枪实弹放到产品中,卖给客户的;很多时候,还要搞到嵌入式设备里实时地跑,这么一来真是压力山大了 ~~~ 。这期间,对于程序优化也算略知皮毛,下面就针对这个问题讲讲。   首先说明一下,这里说的程序优化是指程序效率的优化。一般来说,程序优化主要是以下三个步骤:    1. 算法优化    2. 代码优化    3. 指令优化 算法优化   算法上的优化是必须首要考虑的,也是最重要的一步。一般我们需要分析算法的时间复杂度,即处理时间与输入数据规模的一个量级关系,一个优秀的算法可以将算法复杂度降低若干量级,那么同样的实现,其平均耗时一般会比其他复杂度高的算法少(这里不代表任意输入都更快)。   比如说排序算法,快速排序的时间复杂度为O(nlogn),而插入排序的时间复杂度为O(n*n),那么在统计意义下,快速排序会比插入排序快,而且随着输入序列长度n的增加,两者耗时相差会越来越大。但是,假如输入数据本身就已经是升序(或降序),那么实际运行下来,快速排序会更慢。   因此,实现同样的功能,优先选择时间复杂度低的算法。比如对图像进行二维可分的高斯卷积,图像尺寸为MxN,卷积核尺寸为PxQ,那么     直接按卷积的定义计算,时间复杂度为O(MNPQ)    

js循环/迭代/遍历有多少方法

拜拜、爱过 提交于 2020-01-22 18:48:38
js循环/迭代/遍历有多少方法 JavaScript中存在着很多循环的方法 常见的有 for,while,do while,for in 等, ES5中的 forEach , ES6的 for of , jquery中封装的 each for 局限性很大,通过累加数组索引,来输出数组中的值。一般用来遍历数组,不能遍历对象,因为对象的长度是undefined,无法作为其循环的条件。 let person = { name1 : "fur" , age : "1" , hobbies : { study : "code" , play : "games" } } let arr = [ 'fur' , 'furfur' , 'furfur-jiang' ] console . log ( "遍历对象结果:" ) console . log ( "person对象长度= " + person . length ) console . log ( "遍历数组结果:" ) for ( let i = 0 ; i < arr . length ; i ++ ) { console . log ( arr [ i ] ) } for - 循环代码块一定的次数 while - 当指定的条件为 true 时循环指定的代码块 do/while - 同样当指定的条件为 true 时循环指定的代码块

Python学习笔记(三):分支和循环

匆匆过客 提交于 2020-01-22 14:15:44
第四章 分支和循环 三元操作符 a = x if条件 else y 断言 assert(),当这个关键字后面条件为假时,程序抛出异常。 for循环语句 for 目标 in 表达式\列表 循环体 >> > fa = "fishc" >> > for each in fa : print ( each , end = " " ) f i s h c range() range([start,]stop[,step = 1]) 生成一个从start参数的值开始,到stop参数的值结束的数字。 若range()只传递一个数字,如5,则生产0~5的所有数字(包括0但不包括5) >> > for i in range ( 5 ) : print ( i ) 0 1 2 3 4 传递两个参数 >> > for i in range ( 2 , 9 ) : print ( i ) 2 3 4 5 6 7 8 传递三个参数 >> > for i in range ( 1 , 10 , 2 ) : print ( i ) 1 3 5 7 9 break语句 终止当前循环,跳出循环体。 continue语句 终止本轮循环并开始下一轮循环 来源: CSDN 作者: 黄烦烦二号机 链接: https://blog.csdn.net/qq_43863790/article/details/104069261

Java--foreach循环(增强for循环)

泄露秘密 提交于 2020-01-22 12:29:40
foreach循环(增强for循环) jdk5.0 新增foreach循环,用于遍历集合,数组 //遍历集合 Collection coll = new ArrayList ( ) ; coll . add ( 123 ) ; coll . add ( 456 ) ; coll . add ( new String ( "Tom" ) ) ; coll . add ( false ) ; coll . add ( new Person ( "Tom" , 20 ) ) ; for ( Object obj : coll ) { System . out . println ( obj ) ; } //遍历数组 int [ ] arr = new int [ ] { 1 , 2 , 3 } ; for ( int i : arr ) { System . out . println ( i ) ; } 要注意的是:遍历操作是将值赋给局部遍历,并不是改变本身的值。 来源: CSDN 作者: Boml.白顶 链接: https://blog.csdn.net/qq_43616001/article/details/104068155

day3_ 流程控制语句

让人想犯罪 __ 提交于 2020-01-22 09:23:28
流程控制 概述 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。 顺序结构 顺序执行,根据编写的顺序,从上到下运行 举例: public class Demo01Sequence { //顺序执行,根据编写的顺序,从上到下运行 public static void main(String[] args) { System.out.println(1);//1 System.out.println(2);//2 System.out.println(3);//3 System.out.println(4);//4 } } 判断语句 判断语句之if if语句第一种格式: if 执行流程 首先判断关系表达式看其结果是true还是false 如果是true就执行语句体 如果是false就不执行语句体 执行流程图 举例 // 单if语句 public class Demo02If { public static void main(String[] args) { // 定义两个变量 int a = 10; int b = 20; //a == b 关系表达式 if (a == b) { //语句体 System.out

【Python基础学习笔记day14】python高级变量类型+元组+字典+字符串+公共方法+Python 内置函数+切片+运算符+成员运算符+完整的 for 循环语法+应用场景

倖福魔咒の 提交于 2020-01-22 05:18:07
高级变量类型 文章目录 高级变量类型 目标 知识点回顾 01. 列表 1.1 列表的定义 1.2 列表常用操作 del 关键字(科普) 关键字、函数和方法(科普) 1.3 循环遍历 1.4 **应用场景** 02. 元组 2.1 元组的定义 创建空元组 元组中 **只包含一个元素** 时,需要 **在元素后面添加逗号** 2.2 元组常用操作 2.3 循环遍历 2.4 应用场景 元组和列表之间的转换 03. 字典 3.1 字典的定义 3.2 字典常用操作 3.3 循环遍历 3.4 **应用场景** 04. 字符串 4.1 字符串的定义 4.2 字符串的常用操作 1) 判断类型 - 9 2) 查找和替换 - 7 3) 大小写转换 - 5 4) 文本对齐 - 3 5) 去除空白字符 - 3 6) 拆分和连接 - 5 4.3 字符串的切片 索引的顺序和倒序 05. 公共方法 5.1 Python 内置函数 5.2 切片 5.3 运算符 成员运算符 5.4 完整的 for 循环语法 应用场景 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 ( int ) 浮点型( float ) 布尔型( bool ) 真 True 非 0 数 —— 非零即真 假 False 0 复数型 ( complex )

1008 数组元素循环右移问题

做~自己de王妃 提交于 2020-01-22 01:47:18
题目链接: https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808 题解: 1 #include<iostream> 2 using namespace std; 3 4 int main(){ 5 int n, m; 6 cin >> n >> m; 7 8 int *a = new int[n]; 9 for (int i = 0; i < n; i++) 10 cin >> a[i]; 11 int f = m%n;//当大于数组的长度时,直接取模减少移动次数 12 13 for (int i = n - f; i < n; i++) 14 cout << a[i] << " "; 15 for (int i = 0; i < n - f; i++){ 16 if (i != n - f - 1) cout << a[i] << " "; 17 else cout << a[i];//输出的最后一个没有空格 18 } 19 return 0; 20 } 来源: https://www.cnblogs.com/Gzu_zb/p/9364739.html

1008. 数组元素循环右移问题 (20)

只谈情不闲聊 提交于 2020-01-22 01:46:30
题目名称: PAT (Basic Level) Practise (中文) 1008. 数组元素循环右移问题 (20) 1 #include <cstdio> 2 3 int main() 4 { 5 int n,m; 6 scanf("%d%d",&n,&m); 7 m %= n; 8 m = n-m; 9 int a[n]; 10 for(int i=0;i<n;i++) 11 scanf("%d",a+i); 12 for(int i=0;i<n;i++){ 13 int k= (i+m)%n; 14 if(i==n-1) 15 printf("%d",a[k]); 16 else 17 printf("%d ",a[k]); 18 } 19 return 0; 20 } 来源: https://www.cnblogs.com/fcp1024/p/4297357.html

2020年1月21日C语言循环学习

人走茶凉 提交于 2020-01-22 01:34:47
2020年1月21日C语言学习 一、continue 跳过本次循环,继续执行下次循环 例题:循环输入五个玩家的年龄,统计年龄为负的录入次数(录入正确,则跳过;错误则计数器加一) int age ; int i ; int count = 0 ; //计数器初值为0 for ( i = 0 ; i < 5 ; i ++ ) { printf ( "请输入玩家年龄:" ) ; scanf ( "%d" , & age ) ; if ( age >= 0 ) //正确 { continue ; //跳过正确的情况 } else { count ++ ; } } printf ( "输入错误%d次!\n" , count ) ; 例题:求1-100之间的偶数和 #include <stdio.h> int main() { int i; int sum = 0; for(i = 0; i < 100; i++)//i+=2 { if(i % 2 != 0)//奇数情况 continue;//跳过奇数 sum += i; } printf("输入偶数和:%d",sum); return 0; } 二、continue与break对比 break可用于switch结构和循环结构中;continue只能用于循环结构中 break终止某个循环,程序跳转到循环块外的下一条语句

Thread线程间协作

孤人 提交于 2020-01-21 21:54:26
目录 join yield CountDownLatch CyclicBarrier wait notify LockSupport Condition Conditions SynchronousQueue 线程间的交互和协作从简单到复杂有很多种方式, 下面会从最简单的join开始到使用各种方式和工具来分析. 为了辅助分析线程间的协作, 先撸一下线程的各个状态和状态间轮转的条件. 状态 描述 NEW 创建对象后start之前的状态 RUNNABLE 调用start或yield之后, 代表可以随时运行 BLOCKED 线程等待monitor enter时(等锁), 阻塞状态 WAITING 等待状态, 和阻塞不一样通常可以被interrupt TIMED_WAITING 同WAITING, 但是TIMED_WAITING有时间限制, 超时后终止TIMED_WAITING进入RUNNABLE TERMINATED 线程运行完毕或被关闭后的状态 各个状态之间的流转参考下图所示 join join可以做到最简单的线程交互, 可以让某个线程阻塞起来进入 WAITING 或 TIMED_WAITING 状态, 等另外一个线程执行完成或超时后再继续运行. 以下面代码为例, 线程A启动起来sleep两秒钟. 线程B紧随着线程A启动, 并在线程B中join线程A. 查看运行结果.