zoukankan      html  css  js  c++  java
  • Quick Sort 快速排序

    class Program
        {
            static void Main(string[] args)
            {
                var numbers = new int[] { 6, 4, 3, 10, 2, 21, 15, 1, 8, 9, 24, 64, 43, 767, 7, 3, 8, 22, 87, 28, 56, 76, 23, 88, 13, 554, 775, 20 };
                QuickSort(numbers, 0, numbers.Length - 1);
                foreach (var n in numbers)
                    Console.Write(n + "  ");

                Console.Read();
            }

            static void QuickSort(int[] R, int left, int right)
            {
                int dp;
                if (left < right)
                {
                    dp = Partition(R, left, right);
                    QuickSort(R, left, dp - 1);
                    QuickSort(R, dp + 1, right);
                }
            }

            /// <summary>
            /// 对一个集合进行一次划分,选第一个记录为基准记录,一次划分的结果是
            /// 基准记录左边的都比它小,右边的都比它大。
            /// </summary>
            /// <param name="numbers"></param>
            /// <param name="left">左边指针位置</param>
            /// <param name="right">右边指针位置</param>
            /// <returns>基准记录的位置</returns>
            static int Partition(int[] numbers, int left, int right)
            {
                int basis = numbers[left];
                while (left < right)
                {
                    // 从右到左找第一个比基准记录小的并交换
                    while (left < right && numbers[right] >= basis)
                        right--;
                    numbers[left] = numbers[right];
                    numbers[right] = basis;
                    // 从左到右找第一个比基准记录大的并交换
                    while (left < right && numbers[left] <= basis)
                        left++;
                    numbers[right] = numbers[left];
                    numbers[left] = basis;
                }

                return left;
            }
        }

  • 相关阅读:
    O052、Create Volume 操作 (Part III)
    O051、Create Volume 操作 (Part II)
    O050、Create Volume 操作 (Part I)
    O049、准备 LVM Volume Provider
    O048、掌握 cinder-scheduler 调度逻辑
    O047、 Cinder 组件详解
    O046、掌握Cinder 的设计思想
    O045、理解 Cinder 架构
    O044、一张图秒懂 Nova 16种操作
    O043、计算节点宕机了怎么办
  • 原文地址:https://www.cnblogs.com/bear831204/p/2480591.html
Copyright © 2011-2022 走看看