【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

数组

原创 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];

}

}

什么时候使用数组:

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


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

相关文章推荐

012_Java中的一维数组

l 数组是多个相同类型数据的组合,实现对这些数据的统一管理 l 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型 l 数组属引用类型,数组型数据是对象(object),数组中的每个元...

java中数组

数组是java中的一种数据类型,并且为引用数据类型。long为基本数据类型,而long[]为引用数据类型。 数组的定义: int[] a1 = new int[3]; int a2[] = new int[3]; int[] a = new int[];//注意不定义长度是不正确的,在编译的时候会报“缺少数组维数”的错误  数组的定义并赋值:</

剑指offer面试题14 调整数组顺序使奇数位于偶数前面

解题思路: 1.当遇到让将一个数组、字符串、字符数组划分成两部分的时候,可以考虑使用两个索引,i从数组的前面开始,j从数组的末尾开始,例如快排也是基于这种思想。针对本题,i从左边开始向右寻找到一个偶数...

[经典面试题]子数组的最大乘积

题目 给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合乘积中的最大的一组,并写出算法的时间复杂度。 思路一 穷举法 我们把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小。由于总共有N个(N-1)个数的组合,总的时间复杂度为O(N^2),但显然这不是最好的思路。 思路二 空间换时间 计算(N-1)个

树状数组简单总结

1、树状数组最早用于数据压缩。 2、c[i]的初始位置是去掉最低位的1之后加上1.(最后一个1代表的权值表示c中拥有a的个数。) 3、c[i]下标的起点是下标 x=i-[i&(-i)]+1; 4、树状...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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