zoukankan      html  css  js  c++  java
  • 两个数组合并排序

    class Program
        {
            static void Main(string[] args)
            {
                int[] num1 = new int[] { 3, 5, 6, 7 };
                int[] num2 = new int[] { 1, 3, 7, 8 };
    
                int[] result1 = Sort1(num1, num2);
                int[] result2 = Sort2(num1, num2);
                int[] result3 = Sort3(num1, num2);
            }
    
            //有序无序数组都可以排列并组合
            //1. 先插入到一个数组里面.2. 然后排序
            public static int[] Sort1(int[] num1, int[] num2)
            {
                int[] num3 = new int[num1.Length + num2.Length];
                for (int i = 0; i < num1.Length; i++)
                {
                    num3[i] = num1[i];
                }
                for (int i = 0; i < num2.Length; i++)
                {
                    num3[num1.Length + i] = num2[i];
                }
    
                for (int i = 0; i < num3.Length; i++)
                {
                    for (int j = i + 1; j < num3.Length; j++)
                    {
                        if (num3[i] > num3[j])
                        {
                            int num = num3[i];
                            num3[i] = num3[j];
                            num3[j] = num;
                        }
                    }
                }
    
                return num3;
            }
    
            //针对有序的两个数组
            //1. 两个数组同时比较,进行插入.当其中一个数组插入完毕.跳出循环.
            //2. 对剩下的一个数组里面的数进行插入.
            //2. 如果是无序的两个数组,分别排序再合并 
            public static int[] Sort2(int[] num1, int[] num2)
            {
                int[] num3 = new int[num1.Length + num2.Length];
                int i = 0;
                int j = 0;
                int k = 0;
    
                while (i < num1.Length && j < num2.Length)
                {
                    if (num1[i] < num2[j])
                    {
                        num3[k++] = num1[i++];
                    }
                    else if (num1[i] > num2[j])
                    {
                        num3[k++] = num2[j++];
                    }
                    else
                    {
                        num3[k++] = num1[i++];
                        num3[k++] = num2[j++];
                    }
                }
    
                if (i == num1.Length)
                {
                    while (j < num2.Length)
                        num3[k++] = num2[j++];
                }
                else if (j == num2.Length)
                {
                    while (i < num1.Length)
                        num3[k++] = num1[i++];
                }
    
                return num3;
            }
    
            //List进行操作
            //1. 将两个数组的数插入到List中
            //2. 去除排序
            static int[] Sort3(int[] num1, int[] num2)
            {
                List<int> list1 = new List<int>();
                for (int i = 0; i < num1.Length; i++)
                {
                    list1.Add(num1[i]);
                }
    
                for (int i = 0; i < num2.Length; i++)
                {
                    if (!list1.Contains(num2[i]))
                    {
                        list1.Add(num2[i]);
                    }
                }
    
                list1.Sort();
    
                return list1.ToArray();
            }
    View Code
  • 相关阅读:
    rails best particseceeeeeeeeeeee
    clear out all firefox plugin
    named scope on rail3
    javascript保留两位小数
    rails
    CVSNT权限配置
    rails session使用好文章
    rails session security
    javascript断点调试方法
    rails3发邮件
  • 原文地址:https://www.cnblogs.com/binyao/p/4917674.html
Copyright © 2011-2022 走看看