• 排序快速排序算法


     待排序无序数组 a[10]={34,2,77,23,1,5,7,9,11,44}

    (第一轮) 

    第一步:设左边第一个元素34为基准元素base,拿出来放在一边,这样34的位置就空了出来

    第二步:从最右边开始向左一个个地和base比较,当找到比base小的元素11,就把它放到34空出来的位置上,这样11的位置空了出来

    第三步:从最左边开始向右一个个地和base比较,当找到比base大的元素77,就把它放到11空出来的位置上,这样77的位置空了出来

    第四步:又从最右边开始向左一个个地和base比较,当找到比base小的元素9,就把它放到77空出来的位置上,这样9的位置空了出来

    第五步:又从最左边开始向左一个个地和base比较,当找到元素9的位置时还是找到不比base大的,就把base(34)放在元素9的位置上,现在base(34)的左边都是比它小的元素,右边都是比它大的元素,这样base(34)的位置就可以确定了,位置下标为7

    (第二轮)

     把上一轮找出的位置下标7左边的所有元素分为一新的数组,右边的也分为新的一组,分别重复第一轮的步骤

    (......)

     每重复一轮可以确定一个元素的具体位置,直到所有元素都确定好位置

    平均时间复杂度为:O(N*LogN)

    最差时间复杂度为:O(N^2)

    是否稳定:不稳定

    C++代码如下:

    #include "stdafx.h"

    using namespace System;

    int Division(int a[],int left,int right)
    {
        int base=a[left];
        while(left<right)
        {
            while(left < right && a[right]>base)
            {
                right--;
            }
            a[left]=a[right];

            while(left < right && a[left]<base)
            {
            left++;
            }
            a[right]=a[left];
        }
        a[left]=base;
        return left;
    }

    //快速排序
    void Quick(int a[],int left,int right)
    {
        int i,j;
        if(left<right)
        {
            i = Division(a,left,right);
            Quick(a,left,i-1);
            Quick(a,i+1,right);
        }

    }


    int main(array<System::String ^> ^args)
    {
        int i,a[10]={34,2,77,23,1,5,7,9,11,44};
        Console::WriteLine("sort before:");
        for(i=0;i<10;i++)
        {
        Console::Write(a[i]+ " | ");
        }

        Console::WriteLine("\n");

        Quick(a,0,9);

        Console::WriteLine("sort after:");
        for(i=0;i<10;i++)
        {
        Console::Write(a[i]+ " | ");
        }

        Console::ReadLine();
        return 0;
    }

  • 相关阅读:
    vue-amap地图组件的使用
    数据分析
    爬虫之scrapy框架
    爬虫之selenium
    记录一下最近的pwn
    内核提权姿势笔记
    CVE-2016-5343分析
    CVE-2015-8660分析
    Docker远程访问get(root)shell姿势
    Linux内核ROP学习
  • 原文地址:https://www.cnblogs.com/kavilee/p/2724339.html
Copyright © 2020-2023  润新知