兩個有序數組合併成一個有序數組

題目:A[0..N]有序增,B[0..M]有序增,C[0...N+M]
要求: AB合併成C(c有序增)
算法:

/*************************************************
         *    
         *    算法名稱:數組合並算法
         *    
         *    作     者:李吉忠    
         *    
         *    核心算法:MergeArray(int []arraya,int []arrayb,ref int []arrayc)    
         *    
         *    完成時間:2013-2-4
         */

        class ArrayMerge
        {
                static void MergeArray(int[] arraya, int[] arrayb, ref int[] arrayc)
                {
                        int length_a = arraya.Length;
                        int length_b = arrayb.Length;
                        int i = 0, j = 0;
                        int k = 0;
                        while (i < length_a && j < length_b)
                        {
                                if (arraya[i] < arrayb[j])
                                {
                                        arrayc[k++] = arraya[i++];
                                }
                                else
                                {
                                        arrayc[k++] = arrayb[j++];
                                }
                        }
                        if (i < length_a)
                        {
                                while (i < length_a)
                                {
                                        arrayc[k++] = arraya[i++];
                                }
                        }
                        if (j < length_b)
                        {
                                while (j < length_b)
                                {
                                        arrayc[k++] = arrayb[j++];
                                }
                        }
                }
                static void Display(int[] array)
                {
                        for (int i = 0; i < array.Length; i++)
                        {
                                Console.Write(array[i]);
                        }
                }
                static void Main(string[] args)
                {
                        int[] a = new int[] { 4, 6, 7 };
                        int[] b = new int[] { 2, 5, 7, 8 };
                        int[] c = new int[7];
                        MergeArray(a, b, ref c);
                        Display(c);
                        Console.Read();
                }
運行結果:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章