• 数据结构与算法之快速排序


      简介

        快速排序和其他几种排序的方法相比它的效率较高,因此经常被使用。它由C.R.A.Hoare于1962年提出的一种划分交换排序。采用了一种分治策略,通常称其为分治法(Divide-and-ConquerMethod)。其时间复杂度为O(N*logN)

     分治法的基本思想

        将原问题分解为若干个规模更小但结构与原问题类似的子问题。递归这些子问题,然后将这些子问题的解组合为原问题的解。

     快速排序的步骤

        1、首先在数组中找出一个元素的数值,该值作为基准数。一般选择数组下标中间的数或第一个元素。

        2、分区时将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

        3、再对分好的左右区间进行第2步骤,直到各区间只有一个数。

     快速排序实现

            public void QuickSort1(int[] array, int l, int r)
            {
                if (l < r)
                {
                    int i = l, j = r;
                    int element = array[i];
    
                    while (i < j)
                    {
                        while (i < j && array[j] >= element)//找到小于element的数
                            j--;
    
                        if (i < j)
                        {
                            array[i] = array[j];
                            i++;//后一个元素
                        }
    
                        while (i < j && array[i] < element)//找到大于element的数
                            i++;
    
                        if (i < j)
                        {
                            array[j] = array[i];
                            j--;//前一个元素
                        }
                    }
    
                    array[i] = element;
    
                    QuickSort1(array, l, i - 1);//左区间
                    QuickSort1(array, i + 1, r);//右区间
    
                }
            }
  • 相关阅读:
    java performance
    C# and Java: Comparing Programming Languages
    MYSQL blogs and articles
    网络基本功系列:细说网络那些事儿
    Spark 优化器 ML的论文
    逻辑回归
    MapReduce
    Spark
    Set-Theory-and-Logic
    k-means
  • 原文地址:https://www.cnblogs.com/Khadron/p/5342255.html
Copyright © 2020-2023  润新知