题目:A[0..N]有序增,B[0..M]有序增,C[0...N+M]
要求: AB合并成C(c有序增)
算法:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

InBlock.gif/*************************************************
InBlock.gif         *    
InBlock.gif         *    算法名称:数组合并算法
InBlock.gif         *    
InBlock.gif         *    作     者:李吉忠    
InBlock.gif         *    
InBlock.gif         *    核心算法:MergeArray(int []arraya,int []arrayb,ref int []arrayc)    
InBlock.gif         *    
InBlock.gif         *    完成时间:2013-2-4
InBlock.gif         */

InBlock.gif        class ArrayMerge
InBlock.gif        {
InBlock.gif                static void MergeArray(int[] arraya, int[] arrayb, ref int[] arrayc)
InBlock.gif                {
InBlock.gif                        int length_a = arraya.Length;
InBlock.gif                        int length_b = arrayb.Length;
InBlock.gif                        int i = 0, j = 0;
InBlock.gif                        int k = 0;
InBlock.gif                        while (i < length_a && j < length_b)
InBlock.gif                        {
InBlock.gif                                if (arraya[i] < arrayb[j])
InBlock.gif                                {
InBlock.gif                                        arrayc[k++] = arraya[i++];
InBlock.gif                                }
InBlock.gif                                else
InBlock.gif                                {
InBlock.gif                                        arrayc[k++] = arrayb[j++];
InBlock.gif                                }
InBlock.gif                        }
InBlock.gif                        if (i < length_a)
InBlock.gif                        {
InBlock.gif                                while (i < length_a)
InBlock.gif                                {
InBlock.gif                                        arrayc[k++] = arraya[i++];
InBlock.gif                                }
InBlock.gif                        }
InBlock.gif                        if (j < length_b)
InBlock.gif                        {
InBlock.gif                                while (j < length_b)
InBlock.gif                                {
InBlock.gif                                        arrayc[k++] = arrayb[j++];
InBlock.gif                                }
InBlock.gif                        }
InBlock.gif                }
InBlock.gif                static void Display(int[] array)
InBlock.gif                {
InBlock.gif                        for (int i = 0; i < array.Length; i++)
InBlock.gif                        {
InBlock.gif                                Console.Write(array[i]);
InBlock.gif                        }
InBlock.gif                }
InBlock.gif                static void Main(string[] args)
InBlock.gif                {
InBlock.gif                        int[] a = new int[] { 4, 6, 7 };
InBlock.gif                        int[] b = new int[] { 2, 5, 7, 8 };
InBlock.gif                        int[] c = new int[7];
InBlock.gif                        MergeArray(a, b, ref c);
InBlock.gif                        Display(c);
InBlock.gif                        Console.Read();
InBlock.gif                }
运行结果: