• Java数组元素去重(不使用集合)


    /*
    * 需求:去除整型数组中重复的元素,不能使用集合等方法
    *
    * 解决思路:
    *       1、对数组中的元素进行从小到大的顺序排序
    *       2、获取数组中重复元素的个数
    *       3、获取数组中重复元素的索引位置,并存入创建的索引数组
    *       4、创建去重数组,去重数组长度 = 原始数组长度 - 重复元素个数
    *       5、将原始数组的值赋给去重数组,遇到重复元素的索引位置则不赋值
    */
    
    public class ShuZu {
        public static void main(String[] args) {
            int OldArray[] = {0,1,6,2,2,3,3,5,87,43,12,3,123,43,3,42,3,12,31,23,12,3,1,23,1,6,5,23};
            //遍历原始数组
            System.out.println("原始数组:");
            for (int i = 0; i < OldArray.length; i++) {
                System.out.print(OldArray[i] + " ");
            }
            System.out.println();   //换行作用
            //冒泡排序,从小到大排序
            for (int i = 1; i < OldArray.length; i++) {
                for (int j = 0; j < OldArray.length - i; j++) {
                    if (OldArray[j] > OldArray[j+1]){
                        int temp = OldArray[j];
                        OldArray[j] = OldArray[j + 1];
                        OldArray[j + 1] = temp;
                    }
                }
            }
    
            //计算重复元素的个数
            int count = 0;
            for (int i = 0; i < OldArray.length - 1; i++) {
                //若后面元素等于前面元素,则表示有重复元素
                if (OldArray[i] == OldArray[i + 1]){
                    count++;
                }
            }
    
            //创建索引数组,保存原始数组中重复元素的索引位置
            int index = 0;
            int indexArray[] = new int[count];
            for (int i = 0; i < OldArray.length - 1; i++) {
                //若后面元素等于前面元素,则将后面元素的索引位置赋给索引数组
                if (OldArray[i] == OldArray[i + 1]){
                    indexArray[index] = i + 1;
                    index++;
                }
            }
    
            //创建去重数组
            int newArray[] = new int[OldArray.length - count];
            //定义索引数组的起始索引位置
            int indexOfIndexArray = 0;
            //定义去重数组的起始索引位置
            int indexOfNewArray = 0;
            for (int i = 0; i < OldArray.length; i++) {
                //索引位置不能超过索引数组的边界
                if(indexOfIndexArray < indexArray.length){
                    if(i == indexArray[indexOfIndexArray]){
                        indexOfIndexArray++;
                    }else {
                        //非重复元素赋予去重数组
                        newArray[indexOfNewArray] = OldArray[i];
                        //去重数组的索引位置自增1
                        indexOfNewArray++;
                    }
                } else {
                    //非重复元素赋予去重数组
                    newArray[indexOfNewArray] = OldArray[i];
                    //去重数组的索引位置自增1
                    indexOfNewArray++;
                }
            }
            //遍历去重数组
            System.out.println("去重数组:");
            for (int i = 0; i < newArray.length; i++) {
                System.out.print(newArray[i] + " ");
            }
    
        }
    }
    

    运行结果如下:

    原始数组:
    0 1 6 2 2 3 3 5 87 43 12 3 123 43 3 42 3 12 31 23 12 3 1 23 1 6 5 23 
    去重数组:
    0 1 2 3 5 6 12 23 31 42 43 87 123
    
  • 相关阅读:
    Linux下搭建PHP环境的参考文章小记
    jQuery遇到问题的小记
    小程序 login
    小程序编辑器vscode
    弹性布局详解——5个div让你学会弹性布局
    vue在页面嵌入别的页面或者是视频2
    VUE设置浏览器icon图标
    遮罩层出现后不能滚动 添加事件@touchmove.prevent
    vue 在script里写页面跳转
    axios post、get 请求参数和headers配置
  • 原文地址:https://www.cnblogs.com/xuliang-daydayup/p/12945959.html
Copyright © 2020-2023  润新知