C#快速排序

代码:

namespace 快速排序
{
    class Program
    {
        static void Main(string[] args)
        {
           
            int[] nums = { 1, 9, 6, 4, 2, 5, 7, 10, 3, 8 };          
            Quicksort(0, nums.Length-1 , nums);
            for (int i = 0; i < nums.Length; i++)
            {
                Console.WriteLine(nums [i]);
            }
            Console.ReadKey();


        }
        static void Quicksort(int left,int right, int[] a)
        {
            int i, j, t, temp;//定义四个变量
            if(left >right)
            {
                return;
            }
            i = left; //左
            j = right; //右
            temp = a[left]; //数组最左边的元素,也是基准数
            while (i != j)
            {
                while (a[j] >= temp && i < j) j--;//从右往左找
                while (a[i] <= temp && i < j) i++;//从左往右找
                if (i < j)//左右两边没有碰头的情况下,左右交换
                {
                    t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
            }
            a[left] = a[i]; //
            a[i] = temp;
            Quicksort(left, i - 1, a);
            Quicksort(i + 1, right, a);
            return;
        }
    }
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!