数组的动态扩容、选择排序、冒泡排序、插入排序、计数排序的解析

1.数组的动态扩容

1.1 图解

1.2 代码解释

import java.util.*;
class D1{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //数组的动态扩容
        //建立一个数组长度为零的数组
        int[] arr=new int[0];
        while(true){
            //num用来接收数据
            int num=scanner.nextInt();
            //如果num==0则结束接收数据
            if(num==0){
                break;
            }
            //调用扩充函数,把数组长度加一
            arr=kuoChong(arr,arr.length+1);
            //把扩充数组后的空间放数据
            arr[arr.length-1]=num;
        }
    }
    public static int[] kuoChong(int[] arr,int newlen){
        //建立一个新数组,只是长度为主函数长度加一
        int[] arr1=new int[newlen];
        //把原数组当中的数据赋值到新数组,且长度改变了
        for(int i=0;i<arr.length;i++){
            arr1[i]=arr[i];
        }
        //返回数组
        return arr1;
    }                 
}

2.选择排序

1.1 选择排序的图解

 1.2 代码解释

import java.util.*;
class D1{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //选择排序
        //定义一个数组
        int[] arr={12,3,2,5,6,7,8,9,1};
        //始终让一个位置的数固定,与后面的数一次比较
        for(int i=0;i<arr.length-1;i++){
            //循环后面的数,与arr[i]比较
            for(int j=i+1;j<arr.length;j++){
                //实现升序的功能
                if(arr[i]>arr[j]){
                    //当左边的数比右边大时,交换两个数
                    int temp;
                    temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        //把数组转换成字符串输出
        System.out.println(Arrays.toString(arr));  
    }           
}
//[1, 2, 3, 5, 6, 7, 8, 9, 12]

3.冒泡排序

3.1 图解

3.2 代码

class D1{
    public static void main(String[] args){
        //冒泡排序
        //定义一个数组
        int[] arr={12,3,2,5,6,7,8,9,1};
        //控制循环的次数
        for(int i=0;i<arr.length;i++){
            //创建两两比较时的下标
            for(int j=0;j<arr.length-i-1;j++){
                //实现升序的功能
                if(arr[j]>arr[j+1]){
                    //交换两个数
                    int temp;
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        //把数组转换成字符串输出免得在一个一个遍历
        System.out.println(Arrays.toString(arr));  
    }           
}
//[1, 2, 3, 5, 6, 7, 8, 9, 12]

4.插入排序

4.1 图解

4.2 代码解释

import java.util.*;
class D1{
    public static void main(String []args){
        //定义一个数组
        int[] arr={12,3,2,5,6,7,8,9,1};
        //从数组的第二个开始比较
        for(int i=1;i<arr.length;i++){
            //把该处的值给e,让e保存
            int e=arr[i];
            //如果arr[i]的左边有数,且比arr[i]大,执行arr[j]=arr[j-1],到j>0
            for(int j=i;j>0&&arr[j-1]>e;j--){
                arr[j]=arr[j-1];
            }
            //在把arr[i]的值给arr[j]
            arr[j]=e;
        }
        //把数组转换成字符串输出
        System.out.println(Arrays.toString(arr));
    }
}
//[1, 2, 3, 5, 6, 7, 8, 9, 12]

5.计数排序

5.1 图解

5.2 代码解释

public static void jiShu(int[] arr){
    int min=arr[0],max=arr[0];
    for(int i : arr){
	if(i>max){
	   max=i;
	}
        if(i<min){
	   min=i;
	}
    }
    int[] arr1=new int[max-min+1];
    int offset=min;
    for(int i=0;i<arr.length;i++){
        arr1[arr[i]-offset]++;
    }
    int index=0;
    for(int i=0;i<arr1.length;i++){
        if(arr1[i]!=0){
           for(int j=0;j<arr1[i];j++){
                arr[index++]=i+offset;
           }
        }
    }
    System.out.println(Arrays.toString(arr));
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值