栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1-8 数组与排序法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1-8 数组与排序法

数组的基本操作
  • 注意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));
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号