day005--20150805

回顾:
1.循环:反复执行一段相同或相似的代码
2.循环三要素:
1)循环变量的初始化
2)循环的条件(以循环变量为基础)
3)循环变量的改变(向着循环的结束变)
循环变量: 在循环过程中所改变的那个量
3.循环结构:
1)while:先判断后执行
2)do...while:先执行后判断
第1要素与第3要素相同时
3)for:应用率最高的
4.break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环

int num=1;
while(num<5){
num++;
}
System.out.println(num); //5

int num;
for(num=1;num<5;num++){
}
System.out.println(num); //5

态度
不要为了完成作业而完成作业
学习
课本上的编码题,我都会自己敲一遍

笔记:
1.各种循环结构的更佳适用情况
1)while: "当..."循环
2)do...while: "直到..."循环
第1要素与第3要素相同时首选
3)for: 固定次数循环----应用率最高的
2.嵌套循环:
1)循环中套循环
2)多行多列时使用,外层循环控制行,内层循环控制列
3)执行过程: 外层循环走一次,内存循环走所有次
4)能用一层就不用两层,能用两层就不用三层,层数越少越好
如果超过三层循环,说明设计有问题
5)break只能跳出一层循环
3.程序=算法+数据结构
算法:解决问题的流程/步骤(顺序、分支、循环)
数据结构:将数据按照某种特定的结构来保存--数怎么存
设计合理的数据结构会导致好的算法
4.数组:
1)相同数据类型元素的集合
2)数组是一种数据类型(引用类型)
3)数组的定义:
int[] arr = new int[4];
4)数组的初始化: 给数组中的元素赋值
int[] arr = new int[4]; //0,0,0,0
int[] arr = {1,4,5,7}; //1,4,5,7
int[] arr = new int[]{1,4,5,7}; //1,4,5,7
int[] arr;
arr = {1,4,5,7}; //编译错误,此方式只能声明同时初始化
arr = new int[]{1,4,5,7}; //正确
5)数组的访问: 通过下标/索引来访问数组中的元素
下标从0开始,最大到.length-1
int[] arr = new int[4];
System.out.println(arr.length); //4
arr[0] = 100; //给arr中的第1个元素赋值为100
arr[1] = 200;
arr[2] = 300; //给arr中的第3个元素赋值为300
arr[3] = 400;
arr[4] = 500; //数组下标越界异常
System.out.println(arr[arr.length-1]); //输出最后一个元素
6)数组的遍历:
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){ //遍历arr数组
arr[i] = 100; //给arr中每个元素都赋值为100
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
7)数组的复制:
System.arraycopy(a,1,a1,0,4);
int[] a1 = Arrays.copyOf(a,6);
a = Arrays.copyOf(a,a.length+1);
8)数组的排序:
Arrays.sort(arr); //升序排

任务:
1.冒泡排序算法对4个数排序--int[] arr = {45,23,87,1};
写执行过程----往程序中带数
2.经典案例很熟练的写出来
3.课后作业
4.每日一练

在达内期间-------提高逻辑思维能力(想,练)

听我讲能懂
自己写不出来-------正常的

1)逻辑思维能力还不太够
2)写得太少了----多写几次,往程序中带数

冒泡原理:
1)4个数冒3轮
2)每一轮都是从第1个元素开始比
3)每一次都是和它的下一个元素比
4)冒出来的数就不带它玩了
arr.length-1-i
i=0 比3次
i=1 比2次
i=2 比1次

int[] arr = {45,23,87,1};
for(int i=0;i<arr.length-1;i++){ //控制轮数
for(int j=0;j<arr.length-1-i;j++){ //控制每轮比较的次数
if(arr[j]>arr[j+1]){
int t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}

第一轮:
45和23比,换,23,45,87,1
45和87比,不换,23,45,87,1
87和1比,换,23,45,1,87-----------87冒出来了
第二轮:
23和45比,不换,23,45,1,87
45和1比,换,23,1,45,87------------45冒出来了
第三轮:
23和1比,换,1,23,45,87------------23冒出来了

1)元素数少的话,使用何种方式排序没有影响
2)元素数多的话,排序算法就有优劣之分了
交换次数越少效率越高
3)不同的数据使用不同的排序算法,最终效率也不同

long a = System.currentTimeMillins(); 1010
冒泡算法
long b = System.currentTimeMillins(); 1012

System.out.println(b-a); //Arrays.sort(arr)所花费的毫秒数

10万-----冒泡最快
10万-----快速最快
10万-----插入最快

Arrays.sort(arr); //升序排列(从小到大)

int[] arr = {1,5,76,45};
找最大数的算法:
1.假设第1个元素为最大值
int max = arr[0];
2.遍历剩余元素,将每个元素与max对比,
若大于max,则改变max的值为较大的数
for(int i=1;i<arr.length;i++){
if(arr[i]>max){
max = arr[i];
}
}

int[] a = {10,20,30,40,50};
int[] a1 = new int[7]; //0,0,0,0,0,0,0
for(int i=0;i<a.length;i++){
a1[i] = a[i];
}

max=1
i=1 max=5
i=2 max=76
i=3

int[] arr = new int[10];
System.out.println(arr[9]);
System.out.println(arr[8]);
System.out.println(arr[7]);
System.out.println(arr[6]);
System.out.println(arr[5]);
System.out.println(arr[4]);
System.out.println(arr[3]);
System.out.println(arr[2]);
System.out.println(arr[1]);
System.out.println(arr[0]);

int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = 100;
}

i=0 arr[0]=100
i=1 arr[1]=100
i=2 arr[2]=100
...
i=9 arr[9]=100

arr[0] = 100;
arr[1] = 100;
arr[2] = 100;
arr[3] = 100;
arr[4] = 100;
arr[5] = 100;
arr[6] = 100;
arr[7] = 100;
arr[8] = 100;
arr[9] = 100;

int[] arr = new int[4];
System.out.println(arr[0]); //0
arr[2] = 88; //给第3个元素赋值为88

编译错误,检查语法

int[] arr = new int[4];

int a;
int b;
int c;
int d;

b = 88;

int a = 5;

//声明int型数组arr,包含4个元素
//每个元素都是int型,默认值为0
int[] arr = new int[4]; //0,0,0,0
//声明double型数组dou,包含8个元素
//每个元素都是double型,默认值为0.0
double[] dou = new double[8];
//声明boolean型数组bos,包含20个元素
//每个元素都是boolean型,默认值为false
boolean[] bos = new boolean[20];

将书籍按照图书的类别放置----找书的算法简单

将书籍按照出版社不同放置----算法不会变得简单

实际应用中,在某种情况下需跳出所有层次循环---需求几乎没有
for(int i=1;i<=10000;i++){
for(int j=1;j<=10000;j++){
for(int k=1;k<=10000;k++){
System.out.println("aaa");
break;
}
}
}

软件是要模拟现实生活的

i=1
j=1/2/3/.../19/20
i=2
j=1/2/3/.../19/20
i=3
j=1/2/3/.../19/20

时间: 2024-12-12 07:20:59

day005--20150805的相关文章

Swift学习Day005

7.闭包(Closure) 7.1语法表达式 7.1.1作为上下文推断类型 7.1.2单行表达式隐式返回    7.1.3参数名称缩写    8.枚举(Enumeration) 8.1枚举语法 8.2匹配枚举值和Swift语句 8.3实例指 8.4原始值 8.5举例子

小白学开发(iOS)OC_ @property 参数(2015-08-05)

// //  Person.h //  手动内存管理 // //  Created by admin on 15/8/5. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> #import "Car.h" @interface Person : NSObject /* @property 参数的作用 1. 生成set和get方法的声明 2. 生成s

20150805 Day07 数组,二重循环

数组: 1.打擂比较算法 if(num>max){ max=num; //没有break! } 2.数组排序 sun公司并没有提供一个方法专门用于降序排列,但是我们可以转换一下思路,先对数组中元素进行升序排列,然后降序输出数组中元素. 3.在我们自己的类中,可以对多个系统类进行导入使用.例如可同时使用Arrays和Scanner 二重循环: 1.直角三角形 * ** *** **** ***** *号(j)          行号(i) 1                 1 2        

IOS第七天(5:UiTableView 汽车品牌,复杂模型分组展示,A-Z索要列表) (2015-08-05 14:03)

复杂模型分组展示 #import "HMViewController.h" #import "HMCarGroup.h" #import "HMCar.h" @interface HMViewController () <UITableViewDataSource> @property (nonatomic, strong) NSArray *carGroups; @property (nonatomic, strong) UITab

Django day005

ORM操作 数据库数据类型:数字.字符串.时间.二进制,无布尔值 ORM分类 db first (1)先登录数据库,通过命令创建表结构及对应关系, (2)再通过工具连接上数据库,通过点操作,通过表结构生成类,不用写sql语句 code first(主流) 通过类创建数据库,即转成sql数据,执行create (1)先写类 (2)通过类,创建表结构 例如:Django 使用场景 根据类自动创建数据库表 根据类对数据库中的数据,进行各种操作 创建数据库表结构流程 写类 app02中的models.p

在一个SQL Server表中的多个列找出最大值

在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..##TestTable') IS NOT NULL) DROP TABLE ##TestTable CREATE TABLE ##TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(40), UpdateByApp1Date DATE

转-Unix系统进程对SIGTERM、SIGUSR1和SIGUSR2信号处理

Unix系统进程对SIGTERM.SIGUSR1和SIGUSR2信号处理 作者:vfhky | 时间:2015-08-05 17:41 | 分类:cseries 好久没更新博客了,写篇文章除除草.这篇文章主要通过简单的例子说明一下Unix/Linux进程中如果捕捉和处理SIGTERM.SIGUSR1和SIGUSR2信号. 先说明一下这三个信号: 信号(signal)是*nix系统中进程之间通信(IPC)的一种常见方式. SIGTERM:进程终止信号,效果等同于*nix shell中不带-9的ki

分解跨天的时间数据

数据库环境:SQL SERVER 2005 在百度知道看到这道题目,原问题链接 MS SQL数据库关于时间循环如何处理跨天问题 有如下表: ----------------------------------------------------------------------------------------------------------------- 设备 开始时间 结束时间 总时间(分钟) A 2015-08-01 17:06:49 2015-08-02 03:41:32 635

C语言之文件操作08——总结

C程序的文件操作共涵盖7个例题,包含格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容. 文件操作使得程序有更强的拓展性,使其可以单独保存数据,这为程序的调试和优化打下了坚实的基础,为我们实现大规模计算提供了可能.至此,相信大家对文件操作也有了比较好的认识,无非是写入.读取.调用. 我们常常会听说C的强大,也是因为她有着文件操作的功能,而文件数据是可以方便重写和维护的. MATLAB数学软件是一款十分强大的工具型软件,它是通过C语言来表达算法的,作为面向过程的编程语言C,

CentOS7本地yum源搭建

CentOS 7基于HTTP的本地yum源 [[email protected] ~]# yum install  httpd [[email protected] ~]# systemctl  status httpd[[email protected] ~]# yum update && yum install createrepo [[email protected] ~]# mkdir -p /var/www/html/repos/centos/7/0   --------创建本地