zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    sublime Text2 快捷键精华版
    jQuery中的选择器(下)
    jQuery中的选择器(上)
    C#编程语言与面向对象——类与对象
    C#编程语言与面向对象——核心
    拖延症改变
    IIS 发布网站 ashx无法访问
    C# button 去边框
    JS URL参数传递 谷歌乱码解决
    地址(Address)——统一资源表示(URI)——WCF学习笔记(2)
  • 原文地址:https://www.cnblogs.com/xiaziteng/p/4705899.html
Copyright © 2011-2022 走看看