数组

原创 2016年06月01日 17:18:22

一、概念

同一种类型数据的集合

二、数组的好处

可以自动给元素从0开始编号,方便操作这些元素。

三、数组的格式

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

例如:int[] arr = new arr[5];

另一种初始化方式:

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

例如:int[] arr = {1,32,4,5,6,};

四、数组的常用操作:

1,获取数组的长度

使用length属性获取;

如:arr.length;

2,遍历获取数组中所有元素

for(int i=0; i<arr.length;i++)

System.out.println("arr["+i+"]="+arr[i]);


五、什么时候使用数组:

当元素较多时,为了方便操作这些元素,会先进行临时存储。

六、特点:

数组是固定长度的。

七、数组练习:

1,获取数组中的最大值

/*

 *获取数组中的最大值 思路:

 *1。定义一个变量,用于记录每次比较完比较大的元素,初始化变量值为数组第一个元素

 *2.通过循环让每一个元素都和该变量中的元素进行比较 在遍历过程中定义条件,将比较大的元素用变量进行记录。

 */

publicstatic int getMax(int[] x) {

inttemp = x[0];

for(int i = 1; i < x.length; i++) {

if(temp < x[i])

temp= x[i];

}

returntemp;

}

2,对数组进行选择排序

特点:先确定一个位置,不断的通过这个位置上的元素和其它元素进行比较,如果满足条件,元素进行换位,还是已该位置元素进行比较。内循环结束一次,在0角标位出现最值。

/*

 * 对数组进行选择排序升序

 */

publicstatic void selectSort(int[] arr) {

for(int x = 0; x < arr.length; x++) {

for(int y = x + 1; y < arr.length ; y++) {

if(arr[x] > arr[y]) {

inttemp = arr[x];

arr[x]= arr[y];

arr[y]= temp;

}

}

}

}

3,对数据进行冒泡排序

特点:是相邻两个元素进行比较,内循环结束一次,最尾标位出现最值。

/**

 * 冒泡排序

 */

publicstatic void bubbleSort(int[] arr)

{

for(intx=0;x<arr.length;x++)

{

for(int y=0;y<arr.length-x-1;y++)

{

if(arr[y]>arr[y+1])

{

inttemp = arr[y];

arr[y]= arr[y+1];

arr[y+1]= temp;

}

}

}

}

八、折半查找

必须是对有序的数组进行查找。

/**

 * 折半查找

 */

publicstatic int halfSearch(int[] arr, int key) {

intmax, min, mid;

min= 0;

max= arr.length - 1;

mid= (max + min) / 2;

 

while(arr[mid] != key) {

if(key > arr[mid])

min= mid + 1;

elseif (key < arr[mid])

max= mid - 1;

 

if(min > max)

return-1;

 

mid= (max + min) / 2;

}

 

returnmid;

}

九、数组应用

/**

 * 十进制数转换二进制或者十六进制公用类

 *

 * @author Administrator

 *

 */

public classShiToBinAndHex {

 

/**

 * 十进制转换二进制操作

 * @param num十进制数

 * @return

 */

publicString toBinary(int num){

returntrans(num,1,1);

}

 

/**

 * 十进制转换十六进制操作

 * @param num十进制数

 * @return

 */

publicString toHex(int num){

returntrans(num,15,4);

}

 

/**

 * 十进制转换私有方法

 * @param num需要转换的十进制数

 * @parambase &与上执行的基数

 * @paramoffset 右移位数

 * @return 转换后的字符串

 */

privateString trans(int num, int base, int offset) {

// 定义一个十六进制元素表

char[]chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',

'B','C', 'D', 'E', 'F' };

 

char[]arr = new char[32];

intpos = arr.length;

while(num != 0) {

inttemp = num & base;

arr[--pos]= chs[temp];

num= num >>> offset;

}

 

StringprintNum = printArr(arr, pos);

returnprintNum;

}

 

privateString printArr(char[] arr, int pos) {

returnnew String(arr, pos, arr.length - pos);

}

}

十、二维数组

书写格式:

int[][] x = new int[2][3];

int[][] x = new int[2][];

int[][] arr={{1,2,3,4},{2,3,4},{5,4}};

 

获取arr二维数组的和:

intsum = 0;

for(int i = 0; i < arr.length; i++) {

int[]childArr = arr[i];

for (int y = 0; y< childArr.length;y++) {

sum += childArr[y];

}

}

什么时候使用数组:

数据多了要用容器存储,而数据按照其特点分出了多个部分,每个部分中还有一堆数据。这事可以将部分封装成小数组,在将这些小树组封装到二维数组中。


版权声明:本文为博主原创文章,未经博主允许不得转载。

一维数组与二维数组深度解剖

祥细分析一维数组与多维数组 1、首先我们来看一下一维数组 一维数组的定义:类型名 数组名[元素个数]     我们知道 编译器会在内存中会根据元素个数和元素数据类型分配一段连续的内存...
  • sinat_30438007
  • sinat_30438007
  • 2015年12月16日 01:04
  • 348

使用slice()简单封装实现将数组分割为几个等长度的子数组

使用数组的时候,我们有时候希望将一个数组分成几个相同长度的子数组,使用slice()方法可以返回一个子数组,所以我们可以将slice()再进行封装一下,以实现上面的功能。...
  • fxss5201
  • fxss5201
  • 2017年03月28日 21:34
  • 3359

go 数组和数组切片比较

一、数组  与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列。 (1)数组的创建。 数组有3种创建方式:[length]Type 、[N]Type{value1, value...
  • wenlovingliu
  • wenlovingliu
  • 2015年05月21日 10:55
  • 4053

数组和集合区别

一、数组声明了它容纳的元素的类型,而集合不声明。        二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合...
  • qq_27088383
  • qq_27088383
  • 2016年01月06日 14:39
  • 20329

类数组转数组方法详解

类数组转数组:Array.prototype.slice.call(arguments)方法详解: 我们知道,Array.prototype.slice.call(arguments)能将具有leng...
  • u013084331
  • u013084331
  • 2016年04月21日 16:52
  • 1498

python中数组的使用

转自:http://blog.163.com/jackylau_v/blog/static/17575404020118312853830/ python数组的使用 2010-07-28 ...
  • leo115
  • leo115
  • 2013年01月29日 00:43
  • 22667

指针数组,数组指针与二维数组剖析

int *p[3]与int (*p)[3]的区别 *p[3]这个是一个指针数组,它所代表的意思是数组中的每一个元素都是一个指针变量,而(*p)[3],p是一个指针变量,表示指向一个含有3个整型元素的一...
  • qiumingjian
  • qiumingjian
  • 2015年05月06日 17:24
  • 3369

指针数组与数组指针详解

指针数组与数组指针详解1.什么是指针数组和数组指针? 指针数组:指针数组可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系...
  • men_wen
  • men_wen
  • 2016年09月28日 21:21
  • 9819

易语言-数组的使用

.版本 2 .支持库 spec .程序集 窗口程序集1 .子程序 __启动窗口_创建完毕 .局部变量 数组1, 文本型, , "0" .局部变量 x, 整数型 .局部变量 ...
  • cyuyan112233
  • cyuyan112233
  • 2013年09月06日 10:25
  • 8878

数组和链表的区别

数组结构:        数组结构在通过索引进行查询数据时效率比较高,而对于数组插入和删除操作,则效率会比较低,在第一个位置进行插入数据,其余数据就需要依次向后移动,而第一个数据进行删除,则需要所有数...
  • baoq_v5_java
  • baoq_v5_java
  • 2015年04月10日 17:31
  • 19431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组
举报原因:
原因补充:

(最多只允许输入30个字)