数组初入和数组的使用

来源:互联网 发布:广东人吃老鼠知乎 编辑:程序博客网 时间:2024/05/16 17:35
今天一口气把数组看完。

数组无疑是编程语言很重要的一部分。

首先是数组的使用格式。

我们分为静态数组和动态数组。


动态数组的使用:

第一步,我们给它一个声明,如:

int a[]=null;
或者使用另外一种格式:

int[] a=null;
声明以后,我们还没有给它分配内存空间。

于是,接下来我们制定数组的长度,并且为它分配工作空间:

a=new int[20]; // 这里我们有一个默认的规则,就是数组名的首字母最好为小写
那么,通过一个小例子,来做下使用,以下是我练习的具体代码:

int a[]=null;
a=new int[20];
for(int i=0;i<a.length;i++){
a[i]=i*2+1;
System.out.println("数组长为:"+a[i]);
//我在做例子的时候,由于用多了whlie循环,自己顺手多了打i++
}

动态数组的格式说完之后,我们来讲静态数组。

静态数组相对使用简单,我们在最开始的时候,就可以直接定义好,并且使用。
格式如下:

int b[]={5,6,7,9,7};
同样的可以通过一个小例子,来加深印象。把它输出。不再重复。


进入今天的重点——冒泡排序。

冒泡排序已经不是第一次学了。故名思义,这是一种冒泡泡一样的排序形式,大的泡泡往上浮出来,最后最大的泡在上面,依次到最小的泡泡。
该例子理解的难点,在于双循环的使用,以及中间量的使用理解。

我虽然不是第一次学了,算是知其然,这次再次听,还是感觉到这个算法的巧妙。

不再多说,我们通过代码,通过例子来了解。具体代码如下:
package hellow;


import com.sun.org.apache.xml.internal.security.signature.Manifest;


public class jike7 {  public static void main(String[] args) {
int c[]={9,8,55,60,70,1,30,22,25,10};


 for (int i = 0; i < c.length-1; i++) {
 for (int j = i+1; j < c.length; j++) {
if(c[i]<c[j]){

int d=c[i];
c[i]=c[j];
c[j]=d;
}
}
System.out.println("\n第"+i+"次排序为:");
for(int p=0;p<c.length;p++){System.out.print(c[p]+" ");}
 }
System.out.println("\n最后排序为:");
for(int o=0;o<c.length;o++){System.out.println(c[o]);}

}
}

这里当中,我没有照着视频打。而是靠自己理解后,自己打了一遍。

结果还是出现了一点问题,在第2层循环中,我最开始是定义j=1,考虑到a[0]和a[1]之后来开始比较,所以j比i要多1。
但是忘记了之后的循环,如果再从之前的a[1]开始比较的话,就会出问题。


不仔细想,可能也觉得没有问题。
反正是逐个比较,产生大的数代替原来的数的位置。

其实不对,这个例子里,做第3次排序开始。
由于第2次的排序为:70 60 8 9 55 1 30 22 25 10 
所以a[2]=8,与a[1]=60开始比较,那么之后就会把a[2]的值换成了a[1].
所以我们要保存前面排好的数不动,向后开始比较。
那么,我们在第2层循环中,就要这样定义:j=i+1
这样的话我们的输出结果就是正确的了。

0 0