for循环

数据结构与算法之排序算法

橙三吉。 提交于 2020-01-21 15:03:38
排序 内部排序 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序 交换排序 冒泡排序 快速排序 归并排序 基数排序 外部排序 内部排序 插入排序 直接插入排序 是对于欲排序的元素以插入的方式找寻元素的适当位置,以达到排序的目的 思路: 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 如上图,我们所说的有序表是前面有括号包着的表,后面是无序表。我们每一次都把无序表的第一个元素插入到有序表中,并与有序表的最后一个元素比较,如果比它大就查到后面去,如果比它小,就一个一个往前比较,直到找到位置位置。 代码实现 // 插入排序 public static void insertSort ( int [ ] arr ) { // 使用逐步推导的方式来讲解,便于理解 // 从最后一个开始 遍历到最后一个 for ( int i = 1 ; i < arr . length ; i ++ ) { // 定义待插入的数 int insertVal = arr [ i ] ; int insertIndex = i - 1 ; /

possible resource leak,difer is called in a for loop

拥有回忆 提交于 2020-01-21 08:29:50
我需要一个手动的分页查询,于是我在for循环语句中使用了defer,程序没报什么错,有时候强迫症还是有他的好处的.defer的用法一直是轻车熟路,但很多框架用的久了,这些原本该熟记的东西却不知不觉中模糊了,尽管这样做程序不会报错,但总是会留下bug的可能: possible resource leak,difer is called in a for loop 我看了下idea的提示,想了下,对啊.defer是对整个函数而言的,并不是对某句代码块起作用,我在for中使用defer关闭资源,其实资源一直没有关闭,如果数据量大的话,就可能possible resource leak,资源泄露.然而自己的这块业务恰恰是数据量比较的处理,还好自己看了下. 虽然我知道,但是有时候不经意还是会犯,还是理论不够扎实,做一记录,加深记忆. 来源: CSDN 作者: ckx0709 链接: https://blog.csdn.net/ckx178/article/details/103854360

【数据结构】时间复杂度的计算

与世无争的帅哥 提交于 2020-01-20 22:09:54
作者:raymondCaptain 链接:https://www.jianshu.com/p/f4cca5ce055a 来源:简书 我们假设计算机运行一行基础代码需要执行一次运算。 int aFunc ( void ) { printf ( "Hello, World!\n" ) ; // 需要执行 1 次 return 0 ; // 需要执行 1 次 } 那么上面这个方法需要执行 2 次运算 int aFunc ( int n ) { for ( int i = 0 ; i < n ; i ++ ) { // 需要执行 (n + 1) 次 printf ( "Hello, World!\n" ) ; // 需要执行 n 次 } return 0 ; // 需要执行 1 次 } 这个方法需要 (n + 1 + n + 1) = 2n + 2 次运算。 我们把 算法需要执行的运算次数 用 输入大小n 的函数 表示,即 T(n) 。 此时为了 估算算法需要的运行时间 和 简化算法分析,我们引入时间复杂度的概念。 定义:存在常数 c 和函数 f(N),使得当 N >= c 时 T(N) <= f(N),表示为 T(n) = O(f(n)) 。 如图: 当 N >= 2 的时候,f(n) = n^2 总是大于 T(n) = n + 2 的,于是我们说 f(n) 的增长速度是大于或者等于 T

Go中有一个foreach循环吗?

和自甴很熟 提交于 2020-01-20 04:21:29
Go 语言中有一个 foreach 构造吗? 我可以使用 for 迭代切片或数组吗? #1楼 以下示例显示如何在 for 循环中使用 range 运算符来实现 foreach 循环。 func PrintXml (out io.Writer, value interface{}) error { var data []byte var err error for _, action := range []func() { func () { data, err = xml.MarshalIndent(value, "", " ") }, func () { _, err = out.Write([]byte(xml.Header)) }, func () { _, err = out.Write(data) }, func () { _, err = out.Write([]byte("\n")) }} { action(); if err != nil { return err } } return nil; } 该示例遍历函数数组以统一函数的错误处理。 一个完整的例子在Google的 游乐场 。 PS:它还表明,吊括号对代码的可读性不是一个好主意。 提示: for 条件在 action() 调用之前结束。 很明显,不是吗? #2楼 Go具有 foreach 的语法。 它支持数组

数据结构—算法时间复杂度、空间复杂度和问题规模

我怕爱的太早我们不能终老 提交于 2020-01-20 02:11:57
1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下, 算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示 ,若有某个辅助函数f(n),使得当n趋近于无穷大时, T(n)/f(n) 的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作 T(n)=O(f(n)), 称 O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 另外,上面公式中用到的 Landau符号其实是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》首先引入,由另一位德国数论学家艾德蒙·朗道(Edmund Landau)推广。 Landau符号的作用在于用简单的函数来描述复杂函数行为,给出一个上或下(确)界 。在计算算法复杂度时一般只用到大 O

流程控制

◇◆丶佛笑我妖孽 提交于 2020-01-20 00:57:37
流程控制(1) java中流程控制关键词: if-else : while do-while for return break switch ⚠️java不支持 goto 流程控制(2) 所有条件语句都使用条件表达式的真或假( true 或 false )来决定执行路径,例: x == y ⚠️java不允许将数字作为boolean表达式。 流程控制(3) if-else,例: if ( Boolean - expression ) statement 或者 if ( Boolean - expression ) statement else statement 代码示例 package operators ; import static net . mindview . util . Print . print ; /** * @author vincient * @create 2020-01-19 10:12 AM */ public class IfElse { static int result = 0 ; static void test ( int testval , int target ) { if ( testval > target ) { result = + 1 ; } else if ( testval < target ) { result = - 1

Python_打印编码值

喜你入骨 提交于 2020-01-19 20:07:03
for循环语句、ord()函数的应用 ''' 在终端中获取一个字符串,打印每个字符的编码值 ''' string = input ( '请输入任意内容:' ) for i in string : print ( ord ( i ) ) 来源: CSDN 作者: Rookie_Max 链接: https://blog.csdn.net/Rookie_Max/article/details/104042539

云计算之go语言——基础语法(中)

雨燕双飞 提交于 2020-01-19 14:18:32
9 Go 语言循环语句 1, 概念 在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。 2, 分类 1. for 循环 : 重复执行语句块 a. 语法: for init; condition; post {} for condition {} for {} init: 一般为赋值表达式,给控制变量赋初值; condition: 关系表达式或逻辑表达式,循环控制条件; post: 一般为赋值表达式,给控制变量增量或减量。 b. 实例 for02.go package main import "fmt" func main() { sum := 0 for i := 0 ; i <= 10; i++ { sum += i } fmt.Println(sum) } for03.go package main import "fmt" func main() { sum :=1 for ; sum <=10 ; { sum +=sum } fmt.Println(sum) for sum <= 10 { sum +=sum } fmt.Println(sum) } c. For-each range 循环 这种格式的循环可以对字符串、数组、切片等进行迭代输出元素。 实例: for04.go package main import "fmt" func

九九乘法表

百般思念 提交于 2020-01-19 04:02:57
九九乘法表: 首先创建双层for循环 public class jiujiu{ public static void main{ for(;;){ for(;;){ } } } }    第一层被称为外循环,第二层则是内循环 输出内层与外层循环控制变量的乘积 public class jiujiu{ public static void main{ for(int i=1;i<9;i++){ for(int x=1;x<=i;x++){ System.out.println(x+"*"+i+"="+i*x+" "); } System.out.println(); } } }    来源: https://www.cnblogs.com/zyn0216/p/7501878.html

C语言复习题

人盡茶涼 提交于 2020-01-19 02:13:43
一、选择题 1.源程序TEST.C经编译产生的目标文件和连接后产生的可执行文件是(B)。 A.TEST.BAK和TEST.OBJ B.TEST.OBJ和TEST.EXE C.TEST.EXE 和TEST.C D.TEST.BAK和TEST.EXE 2.以下选项中合法的实型常数是(C)。 A.5E2.0 B.E-3 C.2E0 D.1.3E 3.字符串“ABC”在内存中占用的字节数是(B)。 A.3 B.4 C.6 D.8 4.在C语言中,要求运算数必须是整型的运算符是(D)。 A./ B.++ C.!= D.% 5.若有以下类型说明语句:char w ; int x ; float y ; double z ; ,则表达式w * x + z - y的结果为(D)类型。 A.float B.char C.int D.Double 6.若x和y代表整型数,以下表达式中不能正确表示数学关系|x―y|<10的是(C)。 A.abs( x – y ) < 10 B.x – y > -10 && x – y < 10 C.!( x – y ) < -10 || !( y – x ) > 10 D.( x – y ) * ( x – y ) < 100 7.已知char a = ‘\103’ ;则语句printf( “%3d” , a ) ; 执行后的输出结果为(C)。 A.67 B.‘C’ C