1.冒泡排序算法 《升序排列》

思路1:
数组长度为n,那么要对数组进行n-1次遍历;

step 1---从数组的第一个数开始,两两比较,如果第一个数 > 第二个数,将二者进行交换;
之后拿第二个数与第三个数进行比较,若 第二个数 > 第三个数,将二者进行交换;
依此类推,直到 第n-2个数 和 第n-1个数比较完。

此时,该数组中最大的数将排在数组的最后一个位置。

step 2---重复step1,直到遍历完整个数组。

 public class NewArray {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //排序前 打印数组
System.out.println("\n==============排序前====================");
for(int score : scores) {
System.out.print(score + " ");
} //排序进行时 升序排列
int temp = 0;
int counter = 0;
for(int j = 0; j < scores.length - 1; j++) {
for(int i = 0; i < scores.length - 1; i++) {
if(scores[i] > scores[i+1]) {
temp = scores[i];
scores[i] = scores[i+1];
scores[i+1] = temp;
}
}
counter++;
} //排序后 打印数组
System.out.println("\n==============排序后====================");
for(int score : scores) {
System.out.print(score + " ");
} System.out.println("\n======================================");
System.out.println("共进行了" + counter + "次比较");
}
}

思路2:
数组长度为n,那么要对数组进行n-1次遍历;

step 1---从数组的第一个数开始,两两比较,交换,直到数组元素的(索引 == 数组长度 - 1 - 第i次)遍历数组结束。

step 2---重复step1,直到数组遍历结束。

public class NewArray {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //排序前 打印数组
System.out.println("\n==============排序前====================");
for(int score : scores) {
System.out.print(score + " ");
} //排序进行时 升序排列 int temp = 0;
int counter = 0;
for(int j = 0; j < scores.length - 1; j++) {
for(int i = 0; i < scores.length - 1 - j; i++) {
if(scores[i] > scores[i+1]) {
temp = scores[i];
scores[i] = scores[i+1];
scores[i+1] = temp;
}
}
counter++;
} //排序后 打印数组
System.out.println("\n==============排序后====================");
for(int score : scores) {
System.out.print(score + " ");
} System.out.println("\n======================================");
System.out.println("共进行了" + counter + "次比较");
}
}

思路3:
数组长度为n,那么要对数组进行n-1次遍历;

step 1---从数组的第一个数开始,两两比较,交换,直到数组元素的(索引 == 数组长度 - 1 - 第i次)遍历数组结束。

step 2---重复step1,直到数组中没有发生元素的交换为止。

 public class NewArray {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //排序前 打印数组
System.out.println("\n==============排序前====================");
for(int score : scores) {
System.out.print(score + " ");
} //排序进行时 升序排列
int temp = 0;
int counter = 0;
boolean hasChanged = false;
for(int j = 0; j < scores.length - 1; j++) {
//每一次遍历开始都认为数列无序,数据未发生过交换
hasChanged = false;
for(int i = 0; i < scores.length - 1 - j; i++) {
if(scores[i] > scores[i+1]) {
//只要发生了交换,标志位置为true,表示还需进行下一次比较
hasChanged = true;
temp = scores[i];
scores[i] = scores[i+1];
scores[i+1] = temp;
}
}
counter++;
if(!hasChanged){
break;
}
} //排序后 打印数组
System.out.println("\n==============排序后====================");
for(int score : scores) {
System.out.print(score + " ");
} System.out.println("\n======================================");
System.out.println("共进行了" + counter + "次比较");
}
} 2.方法的重载
一个类中可以存在 [方法名相同、功能相同、参数不同(形参类型、形参数量)的 多个方法]。 这叫方法的重载。
如:
Arrays.sort(int[] arr);
Arrays.sort(float[] arr);
Arrays.sort(byte[] arr);
Arrays.sort(double[] arr);
...
顺便学习了Arrays类的使用,以及API文档的查阅
import java.util.Arrays; public class TestArraysClass {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //输出数组
System.out.println(Arrays.toString(scores)); //将数组排序
Arrays.sort(scores); //输出数组
System.out.println(Arrays.toString(scores)); //查询某个元素
System.out.println(Arrays.binarySearch(scores,4)); //复制一个数组
int[] newScores = Arrays.copyOf(scores,0); //打印新数组
System.out.println(Arrays.toString(newScores)); }
}

3.可变参数
1)格式:
方法头(类型 ... 参数变量名) {
方法实体
}
2)特点:(要背)
a.只能作为方法的形参;
b.JDK1.5之后提供;
c.可接受八种基本数据类型和数组类型数据;
d.可以接受0个、1个和多个实参;
e.可变参数只能是最后一个参数;
f.定义了可变参数的方法后,不可定义数组为形参的方法;
g.重载的方法包括可变参数 和 确定数量参数的方法时,会优先调用确定数量参数的方法,而
忽略可变参数的方法。

4.main方法如何接收实参?
格式:
java 类名 参数1 参数2 参数3...

5.二维数组
1) 声明格式:
类型[][] 数组名; 或
类型 数组名[][];
2) 分配空间:
new 类型[长度][长度]; ---将二维数组的第一维和第二维都分配空间,使这都有默认值。

new 类型[长度][];---仅给二维数组的第一维分配空间,其默认值为null;
3) 动态初始化
数组名[][] = ...;
4) 静态初始化
是将上述三步合而为一。
类型[][] 数组名 = new 类型[][]{{},{},{}...};

类型[][] 数组名 = {{},{},{}...};

 public class TwoDArray{

     public static void main(String[] args) {

         //int[][] scores = new int[][]{{80,90,78},{90,80},{0,70}};
int[][] scores = {{80,90,78},{90,80},{0,70}}; /*scores[0] = new int[4];
scores[1] = new int[3];
scores[2] = new int[2]; scores[0][0] = 80;
scores[0][1] = 79;
scores[0][2] = 78; scores[1][0] = 90;
scores[1][1] = 80; scores[2][1] = 70; */ for(int i = 0; i < scores.length; i++) {
for(int j = 0; j < scores[i].length; j++) {
System.out.print(scores[i][j] + " ");
}
System.out.println();
} } }

尚学堂 JAVA DAY11 概念总结的更多相关文章

  1. 尚学堂 JAVA Day3 概念总结

    java中的运算符 1.算术运算符 + - * / % Arithmetic operators + 运算符有三种身份 Additive Operator 1)加法:如 a + b; 2)连接:如 “ ...

  2. 尚学堂 JAVA Day1 概念总结

    1.什么是计算机语言?一些符号,这些符号按照计算机硬件结构可以理解的方式排列组合,方便人与计算机,计算机与计算机之间进行信息的交换. 2.什么是机器语言?就是简单的二进制0和1的组合.该语言是计算机硬 ...

  3. 尚学堂 JAVA DAY12 概念总结

    面向过程和面向对象的区别.(5 分)面向过程就好像:一位父亲吩咐自己8岁的小儿子去买啤酒.他需要考虑儿子从出门后的每一个步骤,叮嘱儿子出门怎么走,如何过马路,到了超市如何找到酒水区,怎么识别需要的品牌 ...

  4. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  5. 尚学堂Java第一课

    今天是北京尚学堂郑州分校开课的第一天,小班面授教学. 我很兴奋,是一个小白对IT大神渴求传道授业解惑的兴奋. 杨老师还是一贯耐心详细的手敲了第一堂课的完整大纲,必须给杨老师赞赞赞!!! 从幽默的制定班 ...

  6. 尚学堂Java面试题整理

    博客分类: 经典分享   1. super()与this()的差别? - 6 -  2. 作用域public,protected,private,以及不写时的差别? - 6 -  3. 编程输出例如以 ...

  7. 尚学堂java答案解析 第一章

    本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题: 1.C 解析:java为了安全,中并没有引入C语言的指针概念. 2.AD 解析:B:Java先通过ja ...

  8. 尚学堂 JAVA Day13 abstract 关键字

    Abstract (抽象的) 这是一个关键字. 可以且只可以 用来修饰 <类> <方法>. 1---Abstract 类 如:Animal,可以被理解一个抽象的类.动物嘛,只是 ...

  9. 尚学堂java 参考答案 第九章

    一.选择题 1.AC 解析:A.注意题目是Collections不是 Collection,前者是一个until下的类,后者才是接口 C.Set中的数据是无序且不能重复的 2.A 解析:将发生数组越界 ...

随机推荐

  1. yii phpexcel <转>

    原文详情参见 这里 1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php ...

  2. BeanFactory学习

    关于BeanFactory,一个相对易懂的博客,关于深入的理解,后续继续学习 http://www.cnblogs.com/liuling/archive/2013/04/14/BeanFactory ...

  3. HDU5308-脑补-对拍

    先贴上对拍的结果: 感想:可以明显发现下标相差1的关系,所以对付这种需要大量脑补的水题,真的蛋疼,以前没用过对拍,只知道有这么回事,调程序什么的都是手算,人工模拟(经常大脑发热,严重缺氧不足),所以试 ...

  4. PHP 实现ajax的接收

    Ajax界面: 首先,理解本质,就是普通的一个提交在无刷新的情况下发出请求后得到响应,然后去针对你需要 的情况来做行为. <!DOCTYPE html> <html> < ...

  5. c#使用Microsoft Excel 12.0 object Libary导出的Excel文件office2003不能打开!!~~(分享)

    -----转载:http://hi.baidu.com/zhang_zhu_1/item/f3d47d1f86bf037a70d5e87e 使用C#导出数据到Excel文件时,Excel 2007组件 ...

  6. Sql Server 远程过程调用失败

    很多搞开发的同志们,相信在刚刚使用sql server2008+c#2012(2012以上版本)会出现下面图片中的问题,这时因为安装Visual Studio 2013或者2012版本的时候,会自动安 ...

  7. 重新开始学习javase_对象的初始化

    一.类加载机制 类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用.卸载7的阶段: 加载.验证.准备.初始化和卸载这5个阶段的顺序是 ...

  8. interrupt & storage & DMA

    1.Interrupt: The occurrence of an event is usually signaled by aninterrupt from either the hardware ...

  9. oracle常用SQL总结

    这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收 ...

  10. ThinkInJava4读书笔记之第七章隐藏实施过程

    第7章 多形性 上溯造型:将一个对象作为它自己的类型使用,或者作为它的基础类型的一个对象使用.取得一个对象句柄,并将其作为基础类型句柄使用. 方法调用的绑定:将一个方法调用同一个方法主体连接到一起就称 ...