----------------------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数组及排序算法相关推荐

  1. 黑马程序员学习笔记-------c++提高编程

    c++提高编程 本阶段主要针对c++泛型编程和STL技术做详细讲解,探讨cpp更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只 ...

  2. C++随记之模板(黑马程序员学习笔记)

    1.模板分为函数模板和类模板.泛型编程主要思想就是模板.语法template<typename T>.typename表示其后面的符号是一种数据类型,可以用class代替. 2.模板自动类 ...

  3. 【b站黑马程序员学习笔记-shell入门编程】

    使用root用户创建并执行test2.sh,实现创建一个shelltest用户,并在其家目录中新建文件try.html 一. [root@localhost ~]# touch test2.sh [r ...

  4. 黑马程序员学习笔记 关于继承

    ------- <a href="http://www.itheima.com" target="blank">android培训</a> ...

  5. [黑马程序员C++笔记]P72-P83通讯录管理系统

    目录 系统需求 1.菜单功能 2.退出功能 3.添加联系人 (1)​​​​​​​设计联系人结构体 (2) 设计通讯录结构体 ​​​​​​​(3)main函数中创建通讯录 (4)封装添加联系人函数 (5 ...

  6. [黑马程序员C++笔记]P72-P83通讯录管理系统总体概览

    系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别.年龄.联系电话.家 ...

  7. 黑马程序员----0704期java基础班心得

    ------<a  target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程 ...

  8. 【前端学习笔记】移动web-黑马程序员学习笔记

    移动web-黑马程序员学习笔记 1 字体图标 2 平面转换 2.1 绝对定位元素居中: 2.2 双开门效果 2.3 旋转效果 2.4* 转换原点 2.5 多重转换效果 2.6 缩放 3* 渐变 4 空 ...

  9. 黑马程序员jvm笔记总集

    黑马程序员jvm笔记(一)–程序计数器 虚拟机栈 堆 黑马程序员jvm笔记(二)–方法区 串池 直接内存 黑马程序员jvm笔记(三)–垃圾回收部分心得 黑马程序员jvm笔记(四)–字节码部分心得 黑马 ...

最新文章

  1. es任务 如何kill_kill进程的方法
  2. iOS和OS X中的bundle
  3. 【Mood-9】搬家至博客园喽~~~
  4. 单例模式——懒汉模式(C++)
  5. LDC1000循迹小车
  6. WMI介绍及简单实际运用(二,Win32_Processor内容)
  7. bom实现方块移动_从0开始实现一个俄罗斯方块
  8. Server Less 助力前端全栈
  9. 再也不用担心无法将中断绑定到多队列网了
  10. 《大数据分析原理与实践》一一导读
  11. RHEL 7.6 安装 Oracle 18c RAC
  12. I00021 有负数项的数列之和
  13. 对Javascript的原型,原型链和继承的个人理解
  14. golang:map转json字符串
  15. DirectX 入门知识
  16. Android WebView使用详解
  17. 向日葵 监控 android,就是如此简单!向日葵远程控制Android手机版教程
  18. 天玑9000和高通骁龙870哪个好
  19. 计算机组成原理简单模型机实验,CPU 与简单模型机设计实验
  20. c语言程序由什么开头和结尾,一个完整的C程序由什么组成?

热门文章

  1. Android 自定义加载动画LoadingView
  2. 企业号应用菜单php,小红书企业号如何开通并添加菜单栏?
  3. 2020年六级翻译港珠澳大桥(偏经济)
  4. 正确的使用Java 中的日志
  5. 杨澜语录,好好品悟~
  6. 每日简报 4月7日简报新鲜事 在这里,60秒读懂世界
  7. dreamweaver html设计,Dreamweaver
  8. I2C总线-DDC传输协议-显示器EDID结构介绍.doc
  9. vue中后端做Excel导出功能返回数据流前端如何做处理
  10. 学期内表情的变化--兔斯基版