java數組去重


java數組去重

1.創建新數組,用於保存比較結果

2.設定隨機數組最大最小值

3.開始去重

4.計算去重所需時間

package org.zheng.collection;

import java.util.Random;

public class ArrayTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 隨機創建數組
        int[] test = new int[100000];
        Random random = new Random();
        int max = 100000000;
        // 設定隨機數組最小值為1
        int min = 1;
        for(int i=0;i<test.length;i++){
            int s = random.nextInt(max)%(max-min+1) + min ;
            test[i] = s;
        }
        long startTime = System.currentTimeMillis();
        // 調用去重方法
        int[] res = ArrayTest.uniqueArr(test);
        long endTime = System.currentTimeMillis();//獲取結束時間
        System.out.println("新數組法程序運行時間:" + (endTime - startTime) + "ms");
        
        long startTime2 = System.currentTimeMillis();
        // 調用去重方法
        int[] res2 = ArrayTest.uniqueArr2(test);
        long endTime2 = System.currentTimeMillis();//獲取結束時間
        System.out.println("前移法運行時間:" + (endTime2 - startTime2) + "ms");
        
    }
    public static int[] uniqueArr(int[] oldArr){
        // 建立新數組保存對比后的數據
        int[] newArr = new int[oldArr.length];
        newArr[0] = oldArr[0];
        // 設定數組索引的標記
        int index = 1;
        for(int i=1;i<oldArr.length;i++){
            boolean ret=false;
            for(int j=0;j<index;j++){
                if(oldArr[i]==newArr[j]){
                    ret=true;
                    break;
                }
            }
            // 不存在相同的數據,則新數組加一
            if(ret==false){
                newArr[index] = oldArr[i];
                index++;
            }
        }
        // 將新數組的數據復制到最近的數組用於返回
        int[] res = new int[index];
        for(int i = 0; i<index;i++){
            res[i] = newArr[i];
        }
        return res;
    }
    // 前移法
    public static int[] uniqueArr2(int[] arr){
        int index = 1;
        for(int i = 1 ;i <arr.length;i++){
            boolean ret = false;
            for(int j = 0;j<index;j++){
                if(arr[i]==arr[j]){
                    ret=true;
                    break;
                }
            }
            if(ret==false){
                arr[index]=arr[i];
                index++;
            }
            
        }
        int[] newArr = new int[index];
        for(int i = 0;i<index;i++){
            newArr[i] = arr[i];
        }
        return newArr;
    }

}

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM