1)二维数组的静态初始化:

               int[][] arr = new int[][] { {1,2,3}, {4,5}, {6,7}}

2)杨辉三角:

/**
*    需求:计算并模拟杨辉三角
*    如:
*        1
*       1 1
*      1 2 1
*     1 3 3 1
*/
public class PascalTriangle {

    // 打算模拟的行数
    public static int row = 10;

    public static void main(String[] args) {

        int[][] arr = new int[row][];
        for(int i = 0; i < arr.length; i++) {
            int len = i + 1;
            arr[i] = new int[len];
            for(int j = 0; j < len; j++) {
                if(j == 0 || j == i) {
                    arr[i][j] = 1;            // head and tail number
                } else {                       
                    arr[i][j] = arr[i-1][j] //    middle number
                        + arr[i-1][j-1];   
                }
            }
        }

//        验证数值模拟的正确性
//        for(int[] ele : arr) {
//            System.out.println(java.util.Arrays.toString(ele));
//        }
       
        // 打印杨辉三角
        printPascalTriangle(arr);

    }

    /**
     *    需求:按照原始形式打印杨辉三角
     *    如:            1
     *                1        1
     *            1        2        1
     *        1        3        3        1
     *    1        4        6        4        1
     */
    public static void printPascalTriangle(int[][] arr) {
        if(arr == null || arr.length == 0) return;
       
        int rows = arr.length;
       
        for(int i = 0; i < arr.length; i++) {
            if(arr[i] == null || arr[i].length == 0) return;
           
            int left = row -  i;
           
            while(true) {
                if(left-- == 0) break;
                System.out.print("\t");
            }
           
            for(int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]);
                System.out.print("\t\t");
            }
           
            System.out.println("\n");
        }
    }
}

3)汉诺塔:

private void hannuo(int n, char from,
          char to, char depend) {
      if(n==1) {
          move(n, from, to);
      } else {
          hannuo(n-1, from, depend, to);
          move(n, from, to);
          hannuo(n-1, depend, to, from);
      }
  }
 
  private void move(int n, char from, char to) {
        System.out.println(……);
  }
4) for each循环的陷阱:对于基本类型的数组,在循环内部无法改变数组内容,但是对于引用(对象)数组或多维数组,循环内部是可以修改原始内容的。

5)排序算法:

              1.选择排序:直接选择与堆排序

             2.交换排序:冒泡排序、快速排序

             3.插入排序:直接插入、二分法排序、Shell排序

             4.归并排序

6)冒泡排序的思考模型(Bubble Sort):

           这是最简单的排序法,基本思路:

           对未排序的各元素从头到尾依次比较相邻的两个元素大小关系,若大于则交换位置,经过第一轮比较排序后可得出最大值,然后使用同样的方法把剩下的元素逐个比较即可。

           可以看出若有N个元素,那么一共要进行N-1轮比较,第M轮要进行N-M次比较。(若6个元素,要进行6-1轮比较,第一轮比较6-1次,第三轮比较6-3次)。

7)选择排序(Selection Sort):

           基本思路:选择某个索引位置的元素,然后和后面元素依次比较,若大于则交换位置,经过第一轮比较排序后可得出最小值,然后使用同样的方法把剩下的元素逐个比较即可。

           可以看出选择排序,第一轮会选出最小值,第二轮会选出第二小的值,直到最后。

           第一轮从arr[0]和后面元素相比较,第二轮从arr[1]和后面的元素相比较,依次类推。N个数要进行N-1轮。选择排序每一轮只进行一次交换,相对于冒泡排序效率高一些。

8)搜索方法:

        1)顺序搜素:效率低

         2)二分法搜索:效率高,但只能在有序序列中进行搜索

 

Java日志——2016.6.3的更多相关文章

  1. Java日志——2016年5月31日

    1. 三元运算符(A?B:C)属于运算符,表达式必须具有返回值,则A必须是boolean类型值,B和C必须是一个具有返回值的表达式. 2. switch...case本质上只支持int类型的选择判断, ...

  2. Java日志——2016年5月30日

    1. 局部变量必须初始化,可以定义的同时初始化,也可以定义完成之后进行初始化. 2. Java7新特性:数字之间可以使用"_"连接,eg:23_44_5 = 23445,0B110 ...

  3. Java日志框架那些事儿

    文章首发于[博客园-陈树义],点击跳转到原文Java日志框架那些事儿. 在项目开发过程中,我们可以通过 debug 查找问题.而在线上环境我们查找问题只能通过打印日志的方式查找问题.因此对于一个项目而 ...

  4. 混乱的 Java 日志体系

    混乱的 Java 日志体系 2016/09/10 | 分类: 基础技术 | 0 条评论 | 标签: LOG 分享到: 原文出处: xirong 一.困扰的疑惑 目前的日志框架有 jdk 自带的 log ...

  5. Java日志体系(四)slf4j

    1.1 简介 与commons-logging相同,slf4j也是一个通用的日志接口,在程序中与其他日志框架结合使用,并对外提供服务. Simple Logging Facade for Java简称 ...

  6. [翻译]Java日志终极指南

    本文由 ImportNew - Wing 翻译自 loggly.欢迎加入翻译小组.转载请见文末要求. Java日志基础 Java使用了一种自定义的.可扩展的方法来输出日志.虽然Java通过java.u ...

  7. Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明

    Log4j  Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...

  8. Java日志规范

    前言 一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神.程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的.本文想讨论的是如何在Jav ...

  9. Java日志系统及框架分析

    最近在考虑将容器(Tomcat)内的应用日志统一成slf4j + logback,主要目的有: 快速定位应用日志输出路径,方便日志的采集: 能动态调整日志的级别,方便线上问题定位: 方便在容器层面做扩 ...

随机推荐

  1. How to create/restore a slave using GTID replication in MySQL 5.6

    MySQL 5.6 is GA! Now we have new things to play with and in my personal opinion the most interesting ...

  2. sql 2008 游标

    begin declare PlatformBulletin --定义游标 open PlatformBulletin --打开游标 declare @userid int,@zmscompanyid ...

  3. 症状解决,原因不详的用非默认管理权限账户登录COM注册成功但找不到类型问题

    http://social.msdn.microsoft.com/Forums/en-US/11f01ceb-52a4-438f-b7ef-727ce7a3e191/atl-project-in-vs ...

  4. elasticsearch【cat API,系统数据】指令汇总

    本博文讲述的ES获取系统数据的API是基于Elasticsearch 2.4.1版本的. 0. overview a. 下面将要介绍的所有的指令,都支持一个查询参数v(verbose),用来显示详细的 ...

  5. 在CentOS中将/var等已有目录挂载到新添加的硬盘

    1.查看当前硬盘使用状况: [root@gluster_node1 ~]# df -h Filesystem            Size  Used Avail Use% Mounted on / ...

  6. Python入门5

    装饰器 装饰器英文Decorator,自身是一个函数,用来包装其它的函数,实现在不改变原来代码的情况下,增加新的功能,返回一个修改后的函数对象, 装饰器功能: 1.装饰器也是函数 2.在不改变原有代码 ...

  7. Automation Test in Maya Plugin Development

    现状和问题- 开发插件的功能A的时候随手建立场景, 测试插件的功能A. 测试通过后,测试场景就被丢掉.- 发现插件的功能A有bug时, 修改代码, 然后随手建立场景, 测试bug. 测试通过后,测试场 ...

  8. 【转】STM32中的抢占优先级、响应优先级概念

    STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级. 具有高抢占式优先级的中断可以在具 ...

  9. js api 实现钉钉免登

    js api 实现钉钉免登,用于从钉钉微应用跳转到企业内部的oa,erp等,我刚刚实施完了我公司的这个功能,钉钉用起来还不错. 1 js api 实现钉钉免登,页面配置. <title>利 ...

  10. Redis 简单命令

    1. 新增 set keyName "keyValue" 2. 获取 get keyName 查看所有Key keys * 3. 删除 //删除当前数据库中的所有Key flush ...