1-6 数组与排序法

数组的基本操作

  • 注意Arrays的fill、toString、sort、copyOf、binarySearch.
import java.util.Arrays;

public class ArrDemo {

    public static void main(String[] args) {
        //动态初始化
        int[] a = new int[5];   //元素为初始值
//        int a[] = new int[5]; //非传统java
        //静态初始化
        int[] b = {5, 3, 2, 4, 1};
//        int[] b = new int[]{1, 2, 3, 4, 5};   //时代的弃子
        int[] c = {1, 2, 3 ,4, 5,}; //java1.8后可用
        //数组长度用length访问
        for (int i = 0; i < c.length; ++i){
            System.out.print(c[i] + " ");
        }
        System.out.println();
        //二维数组初始化
        int[][] d = new int[2][]; //两个空指针的数组
        int[][] e = new int[2][3];  //有元素默认初始值
        int[][] f = {{1, 2 ,3}, {4, 5, 6}};
        //打印数组
        System.out.println(Arrays.toString(e[0]));
        //全元素赋值
        Arrays.fill(a, 99);
        System.out.println(Arrays.toString(a));
        //指定元素赋值,范围左闭右开
        Arrays.fill(a, 1, 3, -1);
        System.out.println(Arrays.toString(a));
        //自然排序(从小到大)
        int[] a2 = {3, 2, 1, 4, 5};
        Arrays.sort(a2);
        System.out.println(Arrays.toString(a2));
        String[] a3 = {"d", "c", "a", "b", "f"};
        Arrays.sort(a3);
        System.out.println(Arrays.toString(a3));
        //二分查找
        //有序数组
        int index = Arrays.binarySearch(a2, 3);
        System.out.println(index);
        //无序数组,未经自然排序
        index = Arrays.binarySearch(b, 3);
        System.out.println(index);
        //复制数组-扩容部分补默认值
        int[] a4 = Arrays.copyOf(a2, a2.length+2);
        System.out.println(Arrays.toString(a4));
    }
}

在这里插入图片描述

  • 元素个数获取方法
  1. 集合用size()方法
  2. 字符串用length()方法
  3. 数组用length变量

排序法

冒泡排序

在这里插入图片描述

public class Bubble {
    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5};
        for (int i = 0; i < a.length-1; ++i){
            for (int j = 0; j < a.length-1-i; ++j){
                if(a[j] < a[j+1]){
                    int tmp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = tmp;
                }
            }
        }
        //输出结果
        for(int x: a){
            System.out.print(x + " ");
        }
    }
}

在这里插入图片描述

选择排序

在这里插入图片描述

public class Select {
    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5};
        for(int i = 0; i < a.length-1; ++i){
            int k = i;
            for (int j = i+1; j < a.length; ++j){
                if(a[j] > a[k]){
                    k = j;
                }
            }
            int t = a[k];
            a[k] = a[i];
            a[i] = t;
        }
        System.out.println(Arrays.toString(a));
    }
}

在这里插入图片描述

插入排序

在这里插入图片描述

基于交换实现
public class Insert {
    public static void main(String[] args) {
        int[] b = {1, 2, 3, 4, 5};
        //i号及以前的元素是已经排好序的
        for (int i = 0; i < b.length-1; i++) {
        	//将i+1号安置到前面的有序子序列中
            for (int j = i+1; j > 0; j--) {
                if (b[j] > b[j-1]) {
                    int temp = b[j];
                    b[j] = b[j-1];
                    b[j-1] = temp;
                }else {
                    break;
                }
            }
        }
        System.out.println(Arrays.toString(b));
    }
}
基于移位实现
public class Insert {
    public static void main(String[] args) {
        int[] b = {1, 2, 3, 4, 5};
        //i号及以前的元素是已经排好序的
        for (int i = 0; i < b.length-1; i++) {
            //将i+1号安置到前面的有序子序列中
            int t = b[i+1];
            for (int j = i; j >= 0; j--) {
                if (t > b[j]) {
                    b[j+1] = b[j];
                    if(j == 0){
                        b[0] = t;
                    }
                }else
                {
                    b[j+1] = t;
                    break;
                }
            }
        }
        System.out.println(Arrays.toString(b));
    }
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值