数组与它的增删查改与初识排序

数组

为什么需要数组

声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间

数组的基本要素

标识符–>数组名
数组元素 -->值
元素下标:从0开始
元素类型 -->类型

如何使用数组

1.声明数组
2.分配空间
3.赋值
4.处理数据

初始化数组的一些小细节

  • 声明数组时不规定数组长度
  • 数组元素根据类型不同,有不同的初始值
  • 赋值方法1: 边声明边赋值
int[ ] scores = {89, 79, 76};
int[ ] scores = new int[ ]{89, 79, 76};
  • 赋值方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
     scores[i] = input.nextInt();
}

!!!注意!!!创建数组并赋值的方式必须在一条语句中完成,不然会编译报错!

增删查改

找最大值

max = stu[0] ;
if  (stu[1]>max ){
     max=stu [1] ;
}
if  (stu[2]>max ){
     max=stu [2] ;
}
if  (stu[3]>max ){
     max=stu [3] ;
}

设置一个名为max的变量,只要数组中存在有比它大的数据,就将max的值替换为它,所以最后max的结果一定是这个数组中最大的。

插入数据

import java.util.Arrays;
import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] a={99,85,82,63,60};
        int[] b=new int[6];
        for (int i = 0; i < a.length; i++) {
            b[i]=a[i];
        }
        System.out.println(Arrays.toString(b));
        System.out.println("请输入一个数:");
        int num = input.nextInt();
        boolean isInsert=false;
        for (int i=a.length-1;i>=0;i--){
            if(num>b[i]){
                b[i+1]=b[i];//下标后移
            }else{
                b[i+1]=num;
                isInsert=true;
                break;
            }
        }
        if(!isInsert){
            b[0]=num;
        }
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i]+"  ");
        }
    }
}

删除数据

import java.util.Arrays;
import java.util.Scanner;

public class Demo4_1 {
    public static void main(String[] args) {
        int[] a = {99,85,82,63,60};
        int[] b = new int[4];
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要删除的下标:");
        int num = input.nextInt();
        int j = 0;
        for (int i = 0; i < a.length; i++) {
            if(i==num)continue;
            b[j]=a[i];
            j++;
        }
        System.out.println(Arrays.toString(a));
        for (int i = 0; i < j; i++) {
            System.out.print(b[i]+" ");
        }
    }
}

两种排序

选择排序

import java.util.Arrays;

public class Demo6 {
    public static void main(String[] args) {
        /*选择排序逻辑:
        从前向后对每一个下标对应的元素作为基准位
        与后面所有的元素进行比较,找出最小值
        与当前下标的元素进行交换
        进行下一次循环*/

        int[] a={1,3,2,5,8,4};
        for (int i = 0; i < a.length-1; i++) {
            int min = a[i];
            int tmp = i;
            for (int j = i+1; j < a.length; j++) {
                if(a[j]<min){
                    min=a[j];
                    tmp = j;
                }
            }
            a[tmp] = a[i];
            a[i]=min;
        }
        System.out.println(Arrays.toString(a));
    }
}

插入排序

import java.util.Arrays;

public class Demo7 {
    public static void main(String[] args) {
        /*
        * 逻辑:从第二位开始,向前比较,进行插入排序
        */
        int[] a={1,3,2,5,8,4};
        for (int i = 1; i < a.length; i++) {
            int tmp = a[i];
            boolean isInsert = false;
            for (int j = i-1; j >=0 ; j--) {
                if (tmp<a[j]){
                    a[j+1]=a[j];//如果遇到比自己大的,大的值就后移
                }else{
                    a[j+1]=tmp;//如果遇到比自己小的,就在后方插入
                    isInsert = true;
                    break;
                }
            }
            //如果一直没插入,就插入在首位
            if(!isInsert){
                a[0]=tmp;
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

猜你喜欢

转载自blog.csdn.net/Helltaker/article/details/107345321
今日推荐