数组学习完本章后,你应该知道并掌握声明数组创建数组数组初始化
数组
学习完本章后,你应该知道并掌握:
, 声明数组
, 创建数组
, 数组初始化
, 数组内存结构
, 数组的访问
, 数组的边界
, 多维数组
, 数组的排序(冒泡排序、快速排序、递归算法)
, 数组的检索(二分查找)
, Arrays的用法
, 拷贝数组
5.1 概述
数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。在Java语言中, 这些数组元素可以是基本数据类型或引用类型。数组是java编程语言的重要语法,使用数组可以解决很多问题。
5.2 任务分析
数组是用来存放相同类型的数据的;数组一旦创建完成,是不可改变的。
时间:9课时
5.3 相关知识
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
快速排序(Quicksort)是对冒泡排序的一种改进;它的基本思想是:通过一趟排序将要
排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
递归算法是把问题转化为规模缩小了的同类问题的子问题;递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解;递归过程一般通过函数或子过程来实现。
5.4 工作任务
5.4.1 声明数组
在
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
中,新建ArrayTest类,代码如下:
package com.hwadee.train.grammar;
public class ArrayTest {
public static void main(String[] args) {
int a[];
}
}
5.4.2 创建数组
1、 动态创建
a = new int[10];
2、 静态创建
int a[] = {1,4,7,2,5,8,3,6,9}; 5.4.3 数组初始化
数组是引用类型,所以在创建过程中依然符合对象创建“四步曲”,所以数组每个
单元格都存在默认初始化的过程,初始化的值取决于数组类型。初始化的值在上一章中
已经讲过了,在此不再累述。如上例数组类型是整型,所以创建完成后每个单元格的初
始值都为0
5.4.4 数组内存结构
图5.4.1基本类型粗数组内存结构
图5.4.2引用类型粗数组内存结构
5.4.5 数组访问
数组的每个单元格都有一个编号,称之为“下标”,Java中数组的下标是从0开始编号, 比如下标为0就对应到数组的第1个单元格,最大可访问的下标是数组的长度-1,因为下标从0开始;
int c_1 = a[0];
……
int c_9 = a[8];
5.4.6 数组边界
int a[] = {1,4,7,2,5,8,3,6,9};
for(int i=0;i
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
格数据,比如下表就
可以将数据存在二维数组中,然后再对数组进行处理;二维数组的第一维可以理解是“行”,第二维可以理解为“列”
表 5.4.7
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
二维
学号 姓名 科目 成绩 N001 张三
语文
八上语文短文两篇二年级语文一匹出色的马课件部编版八上语文文学常识部编八上语文文学常识二年级语文一匹出色的马课件
80 N002 李四 语文 90 N003 王五 语文 88
表 5.4.7 不规则二维
个人简历
姓名 身份证 年龄 性别 邮箱 联系电话 家庭地址
public void score(int s[][]) { //处理二维数组
}
, 数组长度
twoDim.length返回的第一维的长度
要知道第二维的具体长度可以用
twoDim[0].length
5.4.8 数组的排序
, 冒泡
package com.hwadee.train.grammar; public class BubbleSort {
public static void main(String[] args) {
int[] a = { 49, 38, 65, 97, 76, 13, 27 };
sort(a, 0, 6);
for (int val : a) {
System.out.print(val + " ");
}
}
public static void sort(int[] a, int low, int high) {
if (high==0)return;
for (int i = low; i < high; i++) {
if (a[i] > a[i + 1]) {
swap(a, i, i + 1);
}
}
sort(a,0,high-1);
}
public static void swap(int[] a, int low, int high) {
int temp = a[low];
a[low] = a[high];
a[high] = temp;
}
}
, 快速
package com.hwadee.train.grammar; public class QuickSort {
public static void main(String[] args) {
int[] a = {49,38,65,97,76,13,27};
quicksort(a,0,a.length-1);
for (int val : a) {
System.out.print(val+" ");
}
}
public static void quicksort(int a[],int low,int high) {
int i=low,j=high;
int k = a[low];
if (i < j) {
while(i!=j) {
while(a[j] > k) {
j--;
}
swap(a,i,j);
while (a[i] < k){
i++;
}
swap(a,i,j);
}
quicksort(a,low,i-1);
quicksort(a,i+1,high);
}
}
public static void swap(int[] a,int start,int end) {
int temp = a[start];
a[start] = a[end];
a[end] = temp;
}
}
, 交换排序
public static void swapsort(int a[]) {
for (int i = 0; i < a.length; i++) {
for (int j = i + 1; j < a.length; j++) {
if (a[i] < a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
}
, 引用类型数组排序
class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
public static void sort(){
Point a[] = { new Point(1, 2), new Point(2, 1), new Point(0, 4) };
for (int j = 1; j < a.length; j++) {
for (int i = j; i < a.length; i++) {
if (a[j - 1].getX() > a[i].getX()) {
swap(a, j - 1, i);
}
}
}
}
对于引用类型的数组的排序,必须具体到数对象的具体属性上,象上例按照Point的x坐标的大小升序排序,因为我们谈“各位同学请站成一排”是没有多大意义的,我们必须说“请各位同学按照年龄大小站成一排”这样才是有意义的。
5.4.9 数组的检索
, 二分查找
public static int binarySearch0(int[] a, int fromIndex, int toIndex,int key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found. }
, 顺序查找
public static int search(int []a,int key) {
for (int i=0;ip.x) {
return 1;
}
if(x
本文档为【数组学习完本章后,你应该知道并掌握声明数组创建数组数组初始化】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。