【黑马程序员】 学习笔记 - Java数组及排序算法
----------------------android培训、java培训、期待与您交流!----------------------
JAVA数组及排序算法
一 数组
1.定义
定义:有联系的一些相同的数据类型的数据放在一起定义,这就是数组。
意义:我们可以很方便的来批量操作同一个数组内部的元素。
定义数组的方法:数据类型[] 数组名 = new 数据类型 [数组长度];
或者:数据类型 []数组名 = new 数据类型 {元素1,元素2,.....};
定义数组时的内存如图:
过程:JVM先在栈中申请一个空间,叫做array[6],之后分配一个内存地址,这个地址指向堆内存的一个地址0x2000,并开辟出一个24字节的内存空间。由于数据类型是int,每个元素占4个字节位置,所以array[0]就是0x2000~0x2003,array[1]是0x2004~0x2007,以此类推,到array[5]就是0x2010~0x2013(十六进制)。
2.遍历
用循环语句对数组的每个数据进行操作就叫遍历。
length:直接获取到数组的长度,如ch[10].length就是10。
遍历的时候容易出现那些异常?
a. Array Index Out Of Bounds Exception 角标越界异常:调用了无用的角标
b. Null Pointer Exception 空指针异常:调用了空数据的指针。
建立数组array后,用System.out.println(array);会输出[I@dec7d,会显示array的属性[是数组的意思,I是int型的意思,@dec7d表示哈希值为dec7d。而不是输出整个数组,输出整个数组的元素的方法是遍历。
3.二维数组
定义方法:int [][] arr = new int[3][4];或者int [][] arr = new int[3][];或者int[][]arr = {{3,2,1},{2,3,4,2}{1}};
二维数组相当于一个行列式,有行有列,很适合复杂的数据操作。
4.数组的应用 :排序
简单排序分为选择排序和冒泡排序,其他的排序方法还有快速排序,哈希值排序等。
选择排序:将第一个元素与后面每个元素都进行一次比较,并把两者之中小的交换给第一个元素,完成一次遍历之后,从第二个元素在循环一次,以此类推,直到排完整个序列。
冒泡排序:相邻的两个元素进行比较,如果前者大于后者,交换两者的值,这样一次循环就把最大的排到最后了。循环一次,排列的数组长度就少一位。这种方法叫做冒泡排序。
附:
选择排序法和冒泡排序法的程序及结果截图
public class Sort
{public static void main(String[] args){int[] arr1 = {2,9,1,7,4,6,3,5};int[] arr2 = {2,9,1,7,4,6,3,5};int cnt = 0;//before sorting:System.out.println("Before sorting:");printArray(arr1);//sorting -- selectsort:System.out.println("Sorting--selectsort.....");cnt = selectSort(arr1);//after sorting--selectsort:System.out.println("After sorting--selectsort:");printArray(arr1);System.out.println("It's sorted "+cnt+" times.");//before sorting:System.out.println("Before sorting:");printArray(arr2);//sorting -- bubblesort:System.out.println("Sorting--bubblesort.....");cnt = selectSort(arr2);//after sorting--bubblesort:System.out.println("After sorting--bubblesort:");printArray(arr2);System.out.println("It's sorted "+cnt+" times.");}//it's used to display the array's element's valuepublic static void printArray(int[] arr){System.out.print('[');for(int x = 0 ; x < arr.length-1 ; x++){System.out.print(arr[x]+",");}System.out.println(arr[arr.length-1]+"]");}//function: selecetsort public static int selectSort(int[] arr){int cnt = 0;//Traversing the arrayfor(int x=0; x < arr.length-1; x++){//the sorted element is the smallest in this turn,//we'll begin at the next element for next turn.for(int y=x+1; y < arr.length; y++,cnt++){//we use the sorting element compare the later ones//if the sorting is bigger,we'll exchange their valuesif(arr[x] > arr[y]){int temp = arr[x];arr[x] = arr[y];arr[y] = temp;}}}return cnt;}//function:bubblesortpublic static int bubbleSort(int[] arr){int cnt = 0;int x = 0;//Traversing the arrayfor(; x < arr.length-1; x++);{//Once the array do,the length of the not sort is shorte.for(int y=0; y < arr.length- x -1; y++,cnt++){//if the element is bigger than the next one,we exchange their value.//thus the biggest will goto the bottomif(arr[y] > arr[y+1]){int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}//receive the times we loop;return cnt;}
}
【黑马程序员】 学习笔记 - Java数组及排序算法相关推荐
- 黑马程序员学习笔记-------c++提高编程
c++提高编程 本阶段主要针对c++泛型编程和STL技术做详细讲解,探讨cpp更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只 ...
- C++随记之模板(黑马程序员学习笔记)
1.模板分为函数模板和类模板.泛型编程主要思想就是模板.语法template<typename T>.typename表示其后面的符号是一种数据类型,可以用class代替. 2.模板自动类 ...
- 【b站黑马程序员学习笔记-shell入门编程】
使用root用户创建并执行test2.sh,实现创建一个shelltest用户,并在其家目录中新建文件try.html 一. [root@localhost ~]# touch test2.sh [r ...
- 黑马程序员学习笔记 关于继承
------- <a href="http://www.itheima.com" target="blank">android培训</a> ...
- [黑马程序员C++笔记]P72-P83通讯录管理系统
目录 系统需求 1.菜单功能 2.退出功能 3.添加联系人 (1)设计联系人结构体 (2) 设计通讯录结构体 (3)main函数中创建通讯录 (4)封装添加联系人函数 (5 ...
- [黑马程序员C++笔记]P72-P83通讯录管理系统总体概览
系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别.年龄.联系电话.家 ...
- 黑马程序员----0704期java基础班心得
------<a target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程 ...
- 【前端学习笔记】移动web-黑马程序员学习笔记
移动web-黑马程序员学习笔记 1 字体图标 2 平面转换 2.1 绝对定位元素居中: 2.2 双开门效果 2.3 旋转效果 2.4* 转换原点 2.5 多重转换效果 2.6 缩放 3* 渐变 4 空 ...
- 黑马程序员jvm笔记总集
黑马程序员jvm笔记(一)–程序计数器 虚拟机栈 堆 黑马程序员jvm笔记(二)–方法区 串池 直接内存 黑马程序员jvm笔记(三)–垃圾回收部分心得 黑马程序员jvm笔记(四)–字节码部分心得 黑马 ...
最新文章
- es任务 如何kill_kill进程的方法
- iOS和OS X中的bundle
- 【Mood-9】搬家至博客园喽~~~
- 单例模式——懒汉模式(C++)
- LDC1000循迹小车
- WMI介绍及简单实际运用(二,Win32_Processor内容)
- bom实现方块移动_从0开始实现一个俄罗斯方块
- Server Less 助力前端全栈
- 再也不用担心无法将中断绑定到多队列网了
- 《大数据分析原理与实践》一一导读
- RHEL 7.6 安装 Oracle 18c RAC
- I00021 有负数项的数列之和
- 对Javascript的原型,原型链和继承的个人理解
- golang:map转json字符串
- DirectX 入门知识
- Android WebView使用详解
- 向日葵 监控 android,就是如此简单!向日葵远程控制Android手机版教程
- 天玑9000和高通骁龙870哪个好
- 计算机组成原理简单模型机实验,CPU 与简单模型机设计实验
- c语言程序由什么开头和结尾,一个完整的C程序由什么组成?