写一个程序 是0、1、2、3、4.......99的数组排序

解决方案 »

  1.   


    public class MyQuickSort
        {
            int[] data = new int[] { 10, 2, 5, 7, 3, 1, 20, 34, 4, 6, 30, 99, 23, 8, ...};
    //反正吧,就99个数,不重复从1到99
            public void Display()
            {
                Sort(data, 0, data.Length - 1);
                Console.WriteLine("快速排序结果为:");
                for (int i = 0; i < data.Length; i++)
                    Console.WriteLine(data[i]);
            }        private void Sort(int[] a, int left, int right)
            {
                if (left < right)
                {
                    int i = Partition(a, left, right);
                    Sort(a, left, i - 1);
                    Sort(a, i + 1, right);
                }
            }        private int Partition(int[] a, int left, int right)
            {            int tmp = a[left];
                while (left < right)
                {
                    while (left < right && a[right] >= tmp)
                        right--;

          // 换位后不能将left+1,防止跳位
                    if(left<right)
                        a[left] = a[right];                while (left < right && a[left] <= tmp)
                        left++;                if (left < right)
                    {
                      a[right] = a[left];
      // 有left < right,可将right向前推一位
                        right--;
                    }
                }            a[left] = tmp;            return left;
            }    }