`
xiaoyjj
  • 浏览: 52560 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java学习小总结——数组

阅读更多

感觉好久没有写总结了似的。~这回的主角是关于一维数组、二维数组和有关数组排序的问题。

首先来总结一下一维数组。

什么是数组呢?。可以把数组理解成为一种容器,这个容器的作用是用来储存数据的,而且那些数据要求都是同一种数据类型的。而且,数组中的数据在内存中的存储是占用一整块连续的内存空间。这些特点使得数组变得十分好用而方便。

 

那么怎样来定义一个数组呢?

最基本的方法应该是这样的:

数据类型 [] 数组名 = new 数据类型[数组长度];

例如我们要建立一个用来存储十个整形数据的数组的定义方式就是: int [] array = new int[10];

这种定义直接定义了数组的长度,并没有给数组的元素赋初值。如果定义的数组是存储int型数据,那么系统会默认给每一个元素的初值为0。

 

另一种定义数组的方法是在定义的时候直接给数组的元素赋值。例如

int [] array = new int[]{1,2,3};

 

还有一种定义一维数组的方法就是先定义一个数组的名字,再给他赋值。在给数组赋值的时候我们经常用的方法是用循环。

int [] array = new int[10];

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

     int j = 0;

     array[i] = j++;

}

这样就会通过一个循环给array这个数组赋值,从0到9。这个方法中用到了一个length。可以分析出length是数组类中的一个属性,通过查看api也可以查到数组只有length这一个属性,我们通过调用array.length就可以得到数组的长度。

还有一点要注意的是数组中元素的下标是从0开始的。例如一个长度为10的数组,他的元素是array[0]、array[1]、array[2]…………array[9]

 

 

接下来总结一下对数组进行排序的方法。

首先先来用随机数来生成一个无序的整形数的数组。

 

int[] array = new int[length];
Random ran = new Random();
//给数组元素付初始值
for(int i = 0;i<array.length;i++){
	int val = ran.nextInt(100)+100;
	array[i] = val;
	}
//输出数组元素
System.out.print("\t");
for(int i = 0;i<array.length;i++){
	System.out.print(array[i]+"\t");
	}

 

 其中用到了生成的随机数。这里注意一下吧,其中nextInt(100)+100生成的随机数的范围是从100到199。

 

  这样生成的就是一个有10个随机整形数据的数组。然后就是对这个数组的排序。对一维数组的排序的方法有很多,其中大致可以分为:冒泡排序,选择排序,插入排序,希尔排序,快速排序等等多种不同的算法。这里只说一种比较简单的冒泡排序吧。
首先先来了解一下冒泡排序的原理吧:
冒泡排序的大体步骤首先是数组中第一个数据跟后面的每一个数据进行比较,如果是小于的关系则保持原位置不动,若是大于的关系,则调换两个元素,这样经过第一轮的比较就会把这个数组中最小的元素给排到这个数组中的第一个位置。第二轮比较则是将数组中第二个元素依次与后面的进行比较…………就这样每一轮排序都会把最小的筛选出来,最后完成排序。
这就是冒泡排序的代码:


 

//冒泡排序
public static int [] maopao(int[] array){
          for(int i = 0; i<array.length;i++){
                    for(int j = i+1;j<array.length;j++){
                              if(array[i]>array[j]){
                                       int temp = array[i];
                                       array[i] = array[j];
                                       array[j] = temp;
                              }

                     }
          }
          return array
}

 

这样就可以通过调用这个冒泡排序的方法,返回的则是一个排好序的数组了。
 
如果把一维数组弄明白了,那么二维数组也就很简单了。
在java中实际上是没有二维数组的概念的,因为一个数组可以定义成为任意类型,所以如果定义一个一维数组是用来存储一维数组的,那他实际上就是一个二维数组。
例如如果我们这样建立一个二维数组: int x [][] = new int [3][5];  他其实就是一个长度为3的一维数组,而这个一维数组的每一个元素又是一个长度为5的一维数组。
二维数组的使用也比较简单,赋值的时候只要使用一个双层循环就可以了。还有一点就是二维数组中length的使用,这是与普通的一维数组不同的。

例如我们想知道这个二维数组第3行有多少列,那样就是: x[2].length;

我们要是想知道这个二维数组一共有多少行,那就是: x.length;

 

那~~对数组的一个小总结就到这里。~有更新还会补充~~#^_^

 

0
2
分享到:
评论
4 楼 xiaoyjj 2012-10-19  
ZaneLee007 写道
java有现成的借口,何必非要自己做?
java.util.Arrays.fill(int[] arr, 0, arr.length, 0);
java.util.Arrays.sort(T[]),优化后的二分查找

。~那个。我刚开始学没多久的。还没接触那么多的。。也谢谢指教啦。!!
3 楼 xiaoyjj 2012-10-19  
chinahker 写道
哥,你冒泡排序都没写对还说了这么多。第二重循环j = i+1,数组越界。

哥~那个木有错吧。第二重循环j= i+1;之后要是j比length大那就不进行循环了a
2 楼 chinahker 2012-10-18  
哥,你冒泡排序都没写对还说了这么多。第二重循环j = i+1,数组越界。
1 楼 ZaneLee007 2012-10-17  
java有现成的借口,何必非要自己做?
java.util.Arrays.fill(int[] arr, 0, arr.length, 0);
java.util.Arrays.sort(T[]),优化后的二分查找

相关推荐

Global site tag (gtag.js) - Google Analytics