黑马程序员--数组
2015-10-25 00:05
399 查看
首先是对一个数组来说,就是数组的定义,那么何为数组,用通俗的话来说就是可以存放数据的一个容器。但是从专业的术语来讲就是有限制了,数组:同一个类型的数据集合。那么我们为什么要用数组,因为数组中的元素好操作,数组中的元素从0开始编号。接下来就是要定义一个数组
数组有2种定义形式:1.元素类型[ ] 数组名 = new 元素类型(元素的个数或者数组的长度);
2.元素类型[ ] 数组名 = new 元素类型[ ]{元素,元素,...... };
可以用int 型 举一个例子:如下分别用两种形式来定义一个数组
1. int[ ] arr = new int[ 3 ];
2. int[ ] arr = new int[ ]{1,2,3,4,5};
int[ ] arr = {1,2,3,4,5};
接下来就是对数组进行遍历,就是得出数组中的每个元素的值。
// 数组的遍历
class Day3_9
{
public static void main(String[] args)
{
//int[] a = new int[]{1,2,4};
int a[] = {1,2,4};
for (int b = 0;b<3;b++ )
{
System.out.println(a[b]);
}
}
}
这时候有一个小细节,就是数组在输出过程中,角标可能出现越界的状况,应该注意数组的第一个元素的角标是从0开始的,而不是1。因为上面的代码是第一次写,所以说元素比较少,但是在现实的项目中,可能会出现很多元素的情况,我们又不可能一一的去数元素的个数,所以面临循环的时候,我们可以把数组的长度写成arr.length。而不再去通过人来数。
因为数组的for循环我不想写在主函数中,所以我们把它封装成一个函数,为了下次更好的调用。
//数组的遍历 和 把最后一个数的,去掉 用length、来表示;
class Day4_1
{
public static void main(String[] args)
{
int[] a ={1,4,55,4,7,4546};
printArray(a);
}
public static void printArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )
{
if (a!=arr.length-1)
System.out.print(arr[a]+", ");
else
System.out.print(arr[a]);
}
}
}
OK, 那么问题来了 ,在实际操作中, 我们用数组的目的不是为了仅仅遍历其中的元素,而是要的到数组中的某个具体的元素,好比最大值,最小值之类的。那么我们就拿数组的最大值和最小值以及一次都求出来来做演示,因为代码都是自己手写的,所以有些不规范的地方大家见谅。因为个人比较闲麻烦,所以每次我都把要操作的定义成了一个函数。代码如下:
//算数组中的最大值和最小值
class Day4_2
{
public static void main(String[] args)
{
int a[] = new int[]{1,5,6546,7,987,45};
maxArray(a);
minArray(a);
stepOne(a);
}
public static void maxArray(int arr[])
{
int max = arr[0];
for (int a = 0;a<arr.length ;a++ )
{
if(max < arr[a])
max = arr[a];
}
System.out.println("数组中的最大数是:"+max);
}
public static void minArray(int []arr)
{
int min = arr[0];
for (int a = 0; a<arr.length;a++ )
{
if (min>arr[a])
min =arr[a];
}
System.out.println("数组中的最小数是:"+min);
}
public static void stepOne(int arr[])
{
System.out.println("----------------------");
int max = arr[0];
int min = arr[0];
for (int a = 0;a<arr.length ;a++ )
{
if(max < arr[a])
max = arr[a];
}
System.out.println("数组中的最大数是:"+max);
for (int a = 0; a<arr.length;a++ )
{
if (min>arr[a])
min =arr[a];
}
System.out.println("数组中的最小数是:"+min);
}
}
好了 , 求完了数组的最大值和最小值 ,那么问题来了 ,我想给数组中的元素排个序,我觉得不排序看着闹心,所以我们就要把数组给整理一下然后输出来,就拿最简单的顺序排序和冒泡来举个例子。(ps:对于这两个排序算法,我就不想一一解释了,以为大学里的数据结构和算法没有学好,所以大家要想知道这两个排序是怎么进行的,还是去看一下数据结构,以及栈内存和堆内存的介绍,反正排序的算法有好多。java的util包中也会给你,我好像说多了
)
先来顺序
//给数组进行排序 顺序排序
class Day4_3
{
public static void main(String[] args)
{
int a[] = new int[]{1,2,45,4,1,556,46564,787,1,1,45,4,5,2,2,24};
printArray(a);
sortArray(a);
printArray(a);
}
//排序:两个数比较 从以一个数开始 每一个都与后面的进行比较 与后面最小的的交换位置
public static void sortArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )//双重循环 就相当于每一次都进行一行的对比,先把一地个
{
for (int b = a;b<arr.length ;b++ )
{
int temp;
if(arr[a]>arr[b])
{
temp = arr[b];//定义一个临时变量 对两个值进行交换
arr[b] = arr[a];
arr[a] = temp;
}
}
}
}
public static void printArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )
{
if (a!=arr.length-1)
System.out.print(arr[a]+", ");
else
System.out.print(arr[a]);
}
}
}
再来个冒泡吧:
import java.util.*;//引用包的 形式
//冒泡排序 相邻两个元素进行比较
class Day4_4
{
public static void main(String[] args)
{
int a[] = new int[]{45,46,7,578,9,1,245};
//bubbleArray(a);
//printArray(a);
Arrays.sort(a);// 系统已经定义好了的固定语句,好坑啊。shit
printArray(a);
}
public static void bubbleArray(int arr[])
{
for (int x = 0;x<arr.length-1 ;x++ )
{
for (int y = 0;y<arr.length-x-1 ; y++)
{
if(arr[y]>arr[y+1])
{
int temp;
temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
public static void printArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )
{
if (a!=arr.length-1)
System.out.print(arr[a]+", ");
else
System.out.print(arr[a]);
}
}
}
这里简要说明一下,java的自带util包中已经有可以直接进行排序的算法了,但是前面学习,还是中规中矩的来。
前面我们都是进行一维数组的演示,那么问题来了 ,我想操作二维数组,用通俗语言来讲,二维数组就是数组中的数组,好吧,首先是定义一个二维数组
1.int arr[ ][ ] = new int[ 元素的个数][元素的个数 ];
2.int arr[ ][ ] = new int[ ][ ]{{, , , },{ , },{, , }.....};
既然定义了 我们就要遍历 同样的招式我就不演示了,直接求二维数组中所有元素的最小值,那么最大值也同理
// 定义一个二维int数组,编写代码获取最小元素。
class Test3
{
public static void main(String[] args)
{
int arr[][] = new int[][]{{5,8,89,7,6,-1},{
9827
40},{3,7,889},{45,7,3}};
int min = arr[0][0];
for (int x = 0;x<arr.length ;x++ )
{
for (int y = 0;y<arr[x].length ; y++)
{
if(min > arr[x][y])
min = arr[x][y];
}
}
System.out.println("用户定义的二维数组中的最小值是:"+min);
}
}
好的,总之一句话来说(面向对象的话来说),数组就是更方便的对元素进行操作和整理,以及调用。
数组有2种定义形式:1.元素类型[ ] 数组名 = new 元素类型(元素的个数或者数组的长度);
2.元素类型[ ] 数组名 = new 元素类型[ ]{元素,元素,...... };
可以用int 型 举一个例子:如下分别用两种形式来定义一个数组
1. int[ ] arr = new int[ 3 ];
2. int[ ] arr = new int[ ]{1,2,3,4,5};
int[ ] arr = {1,2,3,4,5};
接下来就是对数组进行遍历,就是得出数组中的每个元素的值。
// 数组的遍历
class Day3_9
{
public static void main(String[] args)
{
//int[] a = new int[]{1,2,4};
int a[] = {1,2,4};
for (int b = 0;b<3;b++ )
{
System.out.println(a[b]);
}
}
}
这时候有一个小细节,就是数组在输出过程中,角标可能出现越界的状况,应该注意数组的第一个元素的角标是从0开始的,而不是1。因为上面的代码是第一次写,所以说元素比较少,但是在现实的项目中,可能会出现很多元素的情况,我们又不可能一一的去数元素的个数,所以面临循环的时候,我们可以把数组的长度写成arr.length。而不再去通过人来数。
因为数组的for循环我不想写在主函数中,所以我们把它封装成一个函数,为了下次更好的调用。
//数组的遍历 和 把最后一个数的,去掉 用length、来表示;
class Day4_1
{
public static void main(String[] args)
{
int[] a ={1,4,55,4,7,4546};
printArray(a);
}
public static void printArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )
{
if (a!=arr.length-1)
System.out.print(arr[a]+", ");
else
System.out.print(arr[a]);
}
}
}
OK, 那么问题来了 ,在实际操作中, 我们用数组的目的不是为了仅仅遍历其中的元素,而是要的到数组中的某个具体的元素,好比最大值,最小值之类的。那么我们就拿数组的最大值和最小值以及一次都求出来来做演示,因为代码都是自己手写的,所以有些不规范的地方大家见谅。因为个人比较闲麻烦,所以每次我都把要操作的定义成了一个函数。代码如下:
//算数组中的最大值和最小值
class Day4_2
{
public static void main(String[] args)
{
int a[] = new int[]{1,5,6546,7,987,45};
maxArray(a);
minArray(a);
stepOne(a);
}
public static void maxArray(int arr[])
{
int max = arr[0];
for (int a = 0;a<arr.length ;a++ )
{
if(max < arr[a])
max = arr[a];
}
System.out.println("数组中的最大数是:"+max);
}
public static void minArray(int []arr)
{
int min = arr[0];
for (int a = 0; a<arr.length;a++ )
{
if (min>arr[a])
min =arr[a];
}
System.out.println("数组中的最小数是:"+min);
}
public static void stepOne(int arr[])
{
System.out.println("----------------------");
int max = arr[0];
int min = arr[0];
for (int a = 0;a<arr.length ;a++ )
{
if(max < arr[a])
max = arr[a];
}
System.out.println("数组中的最大数是:"+max);
for (int a = 0; a<arr.length;a++ )
{
if (min>arr[a])
min =arr[a];
}
System.out.println("数组中的最小数是:"+min);
}
}
好了 , 求完了数组的最大值和最小值 ,那么问题来了 ,我想给数组中的元素排个序,我觉得不排序看着闹心,所以我们就要把数组给整理一下然后输出来,就拿最简单的顺序排序和冒泡来举个例子。(ps:对于这两个排序算法,我就不想一一解释了,以为大学里的数据结构和算法没有学好,所以大家要想知道这两个排序是怎么进行的,还是去看一下数据结构,以及栈内存和堆内存的介绍,反正排序的算法有好多。java的util包中也会给你,我好像说多了
)
先来顺序
//给数组进行排序 顺序排序
class Day4_3
{
public static void main(String[] args)
{
int a[] = new int[]{1,2,45,4,1,556,46564,787,1,1,45,4,5,2,2,24};
printArray(a);
sortArray(a);
printArray(a);
}
//排序:两个数比较 从以一个数开始 每一个都与后面的进行比较 与后面最小的的交换位置
public static void sortArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )//双重循环 就相当于每一次都进行一行的对比,先把一地个
{
for (int b = a;b<arr.length ;b++ )
{
int temp;
if(arr[a]>arr[b])
{
temp = arr[b];//定义一个临时变量 对两个值进行交换
arr[b] = arr[a];
arr[a] = temp;
}
}
}
}
public static void printArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )
{
if (a!=arr.length-1)
System.out.print(arr[a]+", ");
else
System.out.print(arr[a]);
}
}
}
再来个冒泡吧:
import java.util.*;//引用包的 形式
//冒泡排序 相邻两个元素进行比较
class Day4_4
{
public static void main(String[] args)
{
int a[] = new int[]{45,46,7,578,9,1,245};
//bubbleArray(a);
//printArray(a);
Arrays.sort(a);// 系统已经定义好了的固定语句,好坑啊。shit
printArray(a);
}
public static void bubbleArray(int arr[])
{
for (int x = 0;x<arr.length-1 ;x++ )
{
for (int y = 0;y<arr.length-x-1 ; y++)
{
if(arr[y]>arr[y+1])
{
int temp;
temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
public static void printArray(int[] arr)
{
for (int a = 0;a<arr.length ;a++ )
{
if (a!=arr.length-1)
System.out.print(arr[a]+", ");
else
System.out.print(arr[a]);
}
}
}
这里简要说明一下,java的自带util包中已经有可以直接进行排序的算法了,但是前面学习,还是中规中矩的来。
前面我们都是进行一维数组的演示,那么问题来了 ,我想操作二维数组,用通俗语言来讲,二维数组就是数组中的数组,好吧,首先是定义一个二维数组
1.int arr[ ][ ] = new int[ 元素的个数][元素的个数 ];
2.int arr[ ][ ] = new int[ ][ ]{{, , , },{ , },{, , }.....};
既然定义了 我们就要遍历 同样的招式我就不演示了,直接求二维数组中所有元素的最小值,那么最大值也同理
// 定义一个二维int数组,编写代码获取最小元素。
class Test3
{
public static void main(String[] args)
{
int arr[][] = new int[][]{{5,8,89,7,6,-1},{
9827
40},{3,7,889},{45,7,3}};
int min = arr[0][0];
for (int x = 0;x<arr.length ;x++ )
{
for (int y = 0;y<arr[x].length ; y++)
{
if(min > arr[x][y])
min = arr[x][y];
}
}
System.out.println("用户定义的二维数组中的最小值是:"+min);
}
}
好的,总之一句话来说(面向对象的话来说),数组就是更方便的对元素进行操作和整理,以及调用。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统