zoukankan      html  css  js  c++  java
  • Quick Sort

    快排在大规模元素(》100)被证明几乎是效率最高的排序方法, 也是一种分而治之算法的一个典型应用。

    快排的思想是:

    1)每次选定一个元素作为pivot, 利用pivot对数组进行分区(partition)

    2) 大的放在pivot的后面,小的放在pivot前面

    3)递归的对新生成的两个分区进行快排

    代码如下:

        public class QuickSortClass
        {
            public static void QuickSort(int[] array, int left, int right)
            {
                if (left < right)
                {
                    int newPartition = Partition(array, left, right);
                    QuickSort(array, left, newPartition - 1);
                    QuickSort(array, newPartition + 1, right);
                }
            }
    
            public static int Partition(int[] array, int left, int right)
            {
                Console.WriteLine("partition, left={0}, right={1}", left, right);
                int pivot = array[right];
                int j = left - 1, i = left;
                while (i < array.Length && j < array.Length)
                {
                    if (array[i] > pivot)
                    {
                        i++;
                    }
                    else
                    {
                        j++;
                        Swap(ref array[i], ref array[j]);
                        i++;
                    }
                }
    
                return j;
            }
    
            private static void Swap(ref int a, ref int b)
            {
                int t = a;
                a = b;
                b = t;
            }
    
            public static void PrintArray(int[] array)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    Console.WriteLine(array[i]);
                }
            }
        }
  • 相关阅读:
    开博说两句
    学习总结 (持续更新)
    ip代理 120203
    [vs2005]关于预编绎网站的问题[已预编译此应用程序的错误]
    JAVA类基础
    集合类和泛型
    IO流——字符流
    多线程和包
    多态和内部类
    抽象类与接口
  • 原文地址:https://www.cnblogs.com/xuyanran/p/8366025.html
Copyright © 2011-2022 走看看