c#递归排序,请大神来帮帮忙,该如何写。谢谢!

a[0]...a[n-1]为未经排序的整数数组,b[0]...b[m-1]为另一个数组,其中n>m,请编写程序,以从小到大的次序讲a[0]...a[n-1]中前m个较小的数,放在数组b[m-1]当中,其结果要求是,b[0]为最小数,b[1]为第二最小数,b[m-1]为第m个最小数。
要求不可以用其他数组,不可以改变a[0]...a[n-1]的值,除循环变量外,不可以使用其他变量。
例:a{1,5,3,9,13,0,12}
b{4}
结果是:B{0,1,3,5}

a数组可能会出现相等的数字么

楼上写的不错,可以参考

因为不能使用其他变量
不能改变a数组 所以比较麻烦

            int[] a = { 1, 5, 3, 9, 13, 0, 12 };
            int[] b = new int[4];

            b[0] = a[0];
            //b数组 第一位 赋值为 a数组最小值
            for (int i = 0; i < a.Length; i++)
            {
                if (b[0] > a[i])
                {
                    b[0] = a[i];
                }
            }
            b[b.Length - 1] = a[0];
            //b数组 最后一位 赋值为 a数组最大值
            for (int i = 0; i < a.Length; i++)
            {
                if (b[b.Length - 1] < a[i])
                {
                    b[b.Length-1] = a[i];
                }
            }

            for (int m = 1; m < b.Length; m++){
                //给当前位赋值为a数组最大值
                b[m] = b[b.Length - 1];
                for (int n = 0; n < a.Length; n++)
                {
                    //遍历出比b数组前一位 大的最小值
                    if (b[m] > a[n] && a[n]>b[m-1])
                    {
                        b[m] = a[n];
                    }
                } 
            }