数组(1)

1.数组

1)定义

  相同类型数据的有序集合

2)特点

  1数据类型是相同的;

  2数据时有序的;

  3它的长度是确定的,一旦被写出,就不能被改变;

  4数组内的数据类型可以是基本数据类型和引用数据类型。

3)内存分配

  1栈内存(stack)  存储基本数据类型,占较小空间,不需要清理空间

  2堆内存(heap) 存储引用数据类型,占较大空间,需要用new要申请堆内存,用完要删除,但Jvm自动清理空间

2.声明数据的方式<如int>

  1)int [ ] arr;

  arr=new int [ i ];

  arr [0]=1;

  arr [1]=2;

  .......

  System.out.println(arr[ i ]);

  2) int [ ] arr=new int [ ] { 值1 ,值2,值3,...         }

  3)int [ ] arr={ 值1 ,值2,值3,...         }

  需要4步

  声明一个数组;给数组分配空间;赋值;访问数组元素

3.数组的遍历

每一数组元素进行访问

从控制台输出5名同学的成绩,并求平均分

import java.util.Scanner;
public class Test03{
    public static void main(String[ ]args){
        Scanner input=new Scanner(System.in);
        float[] arr=new float[5];
        float sum=0.0f;
        for(int i=0;i<arr.length;i++){
            System.out.println("第"+(i+1)+"位成绩为:");
            arr[i]=input.nextFloat();
            sum+=arr[i];
        }
        System.out.println("平均分为:"+sum/arr.length);
    }
}

4.数组的算法

  1)插入算法

  在一个有序的数组中,添加一个元素,使其依然是有序的

 

 1 //1 2 4 6 9    5
 2 public class Test04{
 3     public static void main(String[]args){
 4         int [] arr={1,2,4,6,9,0};
 5         int t=5;
 6         int wz=-1;
 7         for(int i=0;i<arr.length-1;i++){
 8             if(arr[i]>=t){
 9                 wz=i;
10                 break;
11             }
12         }
13         System.out.println("wz"+wz);
14             if(wz<0){
15                 arr[arr.length-1]=t;
16             }else{
17                 for(int j=arr.length-1;j>wz;j--){
18                     arr[j]=arr[j-1];
19                 }
20                 arr[wz]=t;
21             }
22         
23         for(int i=0;i<arr.length;i++){
24             System.out.println(arr[i]);
25         }
26     }
27 }

 

 

 

  2)删除算法、

  在一个有序的数组中,删除一个元素,数组依然有序

 

 1 //一个有序的数组,删除一个元素,数组依然有序。  删除数组
 2 //1 2 4 6 8 9    4
 3 public class Test05{
 4     public static void main(String[]args){
 5         int [] arr={1,2,4,6,8,9};
 6         int t=4;
 7         int wz=-1;
 8         for(int i=0;i<arr.length;i++){
 9             if(t==arr[i]){
10                 wz=i;
11                 break;
12             }
13         }
14         if(wz<0){
15             System.out.println(t+"在数组中不存在");
16         }else{
17             for(int j=wz;j<arr.length-1;j++){
18                 arr[j]=arr[j+1];
19             }
20         }
21         arr[arr.length-1]=0;
22         for(int i=0;i<arr.length;i++){
23         System.out.println(arr[i]);
24         }
25     }
26 }

 

 

 

  3)冒泡算法

  在一个无序的数组中,将其变为一个有序的数组

 

 1   //对一个无序的数组进行排序  冒泡算法
 2 
 3 public class Test06{
 4     public static void main(String[]args){
 5         int [] arr={4,6,2,5,8,7,13};
 6         int ec=0;
 7         for(int i=0;i<arr.length-1;i++){  //控制趟数
 8             for(int j=0;j<arr.length-1-i;j++){//两两比较
 9                 if(arr[j]>arr[j+1]){
10                     ec=arr[j];
11                     arr[j]=arr[j+1];
12                     arr[j+1]=ec;
13                 }
14             }
15         }
16         for(int i=0;i<arr.length;i++){
17             System.out.println(arr[i]);
18         }
19     }
20 }

 

 

 

 

posted @ 2019-04-16 23:23  他也就火三年  阅读(167)  评论(0编辑  收藏  举报