<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    春風(fēng)博客

    春天里,百花香...

    導(dǎo)航

    <2008年6月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    統(tǒng)計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    整形數(shù)組實用類,用于求兩數(shù)組的并交差集

    package com.sitinspring;

    /**
     * 整形數(shù)組實用類,能求兩數(shù)組的并交差集,不借助于集合類
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2008-6-24-下午10:13:33
     
    */

    public final class IntegerArrayUtil{
        
    // 私有構(gòu)造函數(shù),防止創(chuàng)建IntegerArrayUtil的實例
        private IntegerArrayUtil(){
            
        }

        
        
    /**
         * 取得兩數(shù)組并集
         * 
    @param arr1
         * 
    @param arr2
         * 
    @return
         
    */

        
    public static int[] union(int[] arr1,int[] arr2){
            DynamicArray dynamicArray
    =new DynamicArray();
            
            
    for(int temp:arr1){
                dynamicArray.add(temp);
            }

            
            
    for(int temp:arr2){
                
    if(!exist(temp,arr1)){
                    dynamicArray.add(temp);
                }

            }

            
            
    return dynamicArray.getArr();
        }

        
        
    /**
         * 取得兩數(shù)組交集
         * 
    @param arr1
         * 
    @param arr2
         * 
    @return
         
    */

        
    public static int[] intersact(int[] arr1,int[] arr2){
            DynamicArray dynamicArray
    =new DynamicArray();
            
            
    for(int temp:arr1){
                
    if(exist(temp,arr2)){
                    dynamicArray.add(temp);
                }

            }

            
            
    return dynamicArray.getArr();
        }

        
        
    /**
         * 取得兩數(shù)組差集
         * 
    @param arr1
         * 
    @param arr2
         * 
    @return
         
    */

        
    public static int[] minus(int[] arr1,int[] arr2){
            DynamicArray dynamicArray
    =new DynamicArray();
            
            
    for(int temp:arr1){
                
    if(!exist(temp,arr2)){
                    dynamicArray.add(temp);
                }

            }

            
            
    return dynamicArray.getArr();
        }

        
        
    /**
         * 判斷number在數(shù)組arr中是否存在
         * 
    @param number
         * 
    @param arr
         * 
    @return
         
    */

        
    private static boolean exist(int number,int[] arr){
            
    for(int temp:arr){
                
    if(number==temp){
                    
    return true;
                }

            }

            
            
    return false;
        }

        
        
    /**
         * 顯示數(shù)組元素
         * 
    @param arr
         
    */

        
    private static void display(int[] arr){
            
    for(int temp:arr){
                System.out.print(temp
    +",");
            }

            
            System.out.println();
        }

        
        
    public static void main(String[] args){
            
    int[] arr1={1,2,3,4,5,0,-1,-2,-3,-4,-5,};
            
    int[] arr2={6,2,7,4,8,0,-1,-2,};

            System.out.print(
    "數(shù)組arr1為");
            display(arr1);
            System.out.print(
    "數(shù)組arr2為");
            display(arr2);
            System.out.print(
    "arr1和arr2的并集為");
            display(IntegerArrayUtil.union(arr1, arr2));
            System.out.print(
    "arr1和arr2的交集為");
            display(IntegerArrayUtil.intersact(arr1, arr2));
            System.out.print(
    "arr1和arr2的差集為");
            display(IntegerArrayUtil.minus(arr1, arr2));
        }

    }

    輸出:
    數(shù)組arr1為1,2,3,4,5,0,-1,-2,-3,-4,-5,
    數(shù)組arr2為6,
    2,7,4,8,0,-1,-2,
    arr1和arr2的并集為1,
    2,3,4,5,0,-1,-2,-3,-4,-5,6,7,8,
    arr1和arr2的交集為2,
    4,0,-1,-2,
    arr1和arr2的差集為1,
    3,5,-3,-4,-5,

    動態(tài)數(shù)組類:
    package com.sitinspring;

    /**
     * 動態(tài)數(shù)組類,以數(shù)組為數(shù)據(jù)容器實現(xiàn)動態(tài)數(shù)組的功能
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2008-6-23-下午10:08:09
     
    */

    public class DynamicArray {
        
    /** *//**
         * 用于存儲數(shù)據(jù)的數(shù)組
         
    */

        
    private int[] arr;

        
    /** *//**
         * 初始化大小
         
    */

        
    private static final int initSize = 10;

        
    /** *//**
         * 當(dāng)前元素個數(shù)
         
    */

        
    private int currItemsCount = 0;

        
    /** *//**
         * 構(gòu)造函數(shù)一,固定大小
         
    */

        
    public DynamicArray() {
            arr 
    = new int[initSize];
        }

        
        
    /** *//**
         * 構(gòu)造函數(shù)二,指定大小
         
    */

        
    public DynamicArray(int len) {
            arr 
    = new int[len];
        }


        
    /** *//**
         * 取得位置在i的元素
         
    */

        
    public int get(int i) {
            
    if (i < currItemsCount) {
                
    return arr[i];
            }


            
    return -999;
        }


        
    /** *//**
         * 取得數(shù)組中已有元素的個數(shù)
         * 
    @return
         
    */

        
    public int size() {
            
    return currItemsCount;
        }


        
    /** *//**
         * 添加一個元素到數(shù)組
         * 
    @param number
         
    */

        
    public void add(int number) {
            
    if (currItemsCount >= arr.length) {
                
    int[] arrNew = new int[arr.length * 2];
                
    for (int i = 0; i < arr.length; i++{
                    arrNew[i] 
    = arr[i];
                }


                arr 
    = arrNew;
            }


            arr[currItemsCount] 
    = number;
            currItemsCount
    ++;
        }


        
    /** *//**
         * 刪除位置在i的元素
         * 
    @param removeIndex
         
    */

        
    public void remove(int removeIndex) {
            
    if (removeIndex < arr.length) {
                
    if (removeIndex > currItemsCount) {
                    
    int[] arrNew = new int[arr.length - 1];
                    
    for (int j = 0; j < arrNew.length; j++{
                        arrNew[j] 
    = arr[j];
                    }


                    arr 
    = arrNew;
                }
     else {
                    
    int[] arrNew = new int[arr.length - 1];
                    
    for (int j = 0; j < removeIndex; j++{
                        arrNew[j] 
    = arr[j];
                    }


                    
    for (int j = removeIndex + 1; j < arr.length; j++{
                        arrNew[j 
    - 1= arr[j];
                    }

                    currItemsCount
    --;
                    arr 
    = arrNew;
                }

            }

        }


        
    /** *//**
         * 取得添值部分的數(shù)組
         * 
    @return
         
    */

        
    public int[] getArr() {
            
    int[] arrNew = new int[currItemsCount];

            
    for (int i = 0; i < arrNew.length; i++{
                arrNew[i] 
    = arr[i];
            }


            
    return arrNew;
        }

        
        
    /** *//**
         * 取得已排序的數(shù)組
         * 
    @return
         
    */

        
    public int[] getSortedArr(){
            
    int[] arrSorted = getArr();
            insertSort(arrSorted);
            
    return arrSorted;
        }


        
    /** *//**
         * 進(jìn)行插入排序
         * 
    @param arr
         
    */

        
    private static void insertSort(int[] arr) {
            
    int i, temp;
            
    // 插入位置
            int insertPos;
            
    for (i = 1; i < arr.length; i++{
                
    // 當(dāng)前需要進(jìn)入已排序隊列的項
                temp = arr[i];
                insertPos 
    = i;

                
    // 向右移動
                while (0 < insertPos && arr[insertPos - 1>= temp) {
                    arr[insertPos] 
    = arr[insertPos - 1];
                    
    --insertPos;
                }


                
    // 當(dāng)前項該處于的位置
                arr[insertPos] = temp;
            }

        }


        
    /** *//**
         * 顯示添值部分的數(shù)組
         *
         
    */

        
    public void display() {
            System.out.print(
    "現(xiàn)有元素有:");
            
    for (int i = 0; i < currItemsCount; i++{
                System.out.print(arr[i] 
    + ",");
            }

            System.out.print(
    "\n");
        }


        
    /** *//**
         * 顯示數(shù)組的所有子元素,包括添值和未添值部分
         *
         
    */

        
    public void displayAll() {
            System.out.print(
    "所有元素有:");
            
    for (int i = 0; i < arr.length; i++{
                System.out.print(arr[i] 
    + ",");
            }

            System.out.print(
    "\n");
        }


        
    /** *//**
         * 程序入口
         * 
    @param args
         
    */

        
    public static void main(String[] args) {
            DynamicArray dArray 
    = new DynamicArray(12);

            dArray.add(
    1);
            dArray.add(
    2);
            dArray.add(
    3);
            dArray.add(
    4);
            dArray.add(
    5);
            dArray.display();
            dArray.displayAll();

            dArray.add(
    6);
            dArray.add(
    7);
            dArray.add(
    8);
            dArray.add(
    9);
            dArray.add(
    10);
            dArray.display();
            dArray.displayAll();

            dArray.add(
    11);
            dArray.add(
    12);
            dArray.add(
    13);
            dArray.add(
    14);
            dArray.add(
    15);
            dArray.display();
            dArray.displayAll();

            dArray.remove(
    3);
            dArray.display();
            dArray.displayAll();

            dArray.remove(
    0);
            dArray.display();
            dArray.displayAll();

            dArray.remove(
    10);
            dArray.display();
            dArray.displayAll();

            dArray.add(
    2);        
            dArray.add(
    3);
            dArray.add(
    4);
            dArray.add(
    3);
            dArray.add(
    4);
            
            dArray.display();
            System.out.print(
    "已排序數(shù)組元素為:");
            
    int[] arr = dArray.getSortedArr();
            
    for (int i = 0; i < arr.length; i++{
                System.out.print(arr[i] 
    + ",");
            }

            System.out.print(
    "\n");
        }

    }

    posted on 2008-06-24 22:51 sitinspring 閱讀(1206) 評論(0)  編輯  收藏 所屬分類: Java基礎(chǔ)算法數(shù)據(jù)結(jié)構(gòu)

    sitinspring(http://www.tkk7.com)原創(chuàng),轉(zhuǎn)載請注明出處.
    主站蜘蛛池模板: 亚洲综合久久久久久中文字幕| 亚洲精品自产拍在线观看动漫| 亚洲国产天堂在线观看| 亚洲制服丝袜中文字幕| 国产免费黄色无码视频| 日本妇人成熟免费中文字幕| 亚洲黄片毛片在线观看| 激情内射亚洲一区二区三区| 精品免费AV一区二区三区| 日韩精品极品视频在线观看免费| 国产精品无码一区二区三区免费 | 亚洲爆乳精品无码一区二区| 成在线人免费无码高潮喷水| 两个人的视频高清在线观看免费| 国产午夜亚洲精品午夜鲁丝片| 亚洲 欧洲 视频 伦小说| 很黄很污的网站免费| 四虎影视永久免费观看| 亚洲视频日韩视频| kk4kk免费视频毛片| 妞干网在线免费观看| 亚洲一区二区中文| jizz在线免费观看| 午夜免费不卡毛片完整版| 亚洲天堂久久精品| 一级特级女人18毛片免费视频| 欧亚精品一区三区免费| 亚洲国产女人aaa毛片在线| 五月婷婷免费视频| 成人av免费电影| 亚洲综合久久久久久中文字幕| 国产一级a毛一级a看免费人娇| 国产色爽免费视频| 亚洲一卡2卡4卡5卡6卡在线99| 最近2019中文免费字幕在线观看 | 久久久久亚洲精品天堂| 99热在线日韩精品免费| 成人亚洲综合天堂| 亚洲精品无码中文久久字幕| 四虎成年永久免费网站| 亚洲精品线在线观看|