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]);
                }
            }
        }
  • 相关阅读:
    Python统计nginx日志域名下载量
    如何使用MySQL自动化备份脚本添加备份任务
    迁移数据库报错
    cobbler
    Zabbix添加nginx-php监控
    Zookeeper运维问题集锦
    Jira+Wiki配置手册
    Gitlab安装恢复手册
    Glusterfs配置手册
    k8s的认证-RBAC机制
  • 原文地址:https://www.cnblogs.com/xuyanran/p/8366025.html
Copyright © 2011-2022 走看看