zoukankan      html  css  js  c++  java
  • 排序快速排序算法

     待排序无序数组 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;
    }

  • 相关阅读:
    Asp.net 动态添加Meta标签
    【转】在SharePoint Server 2010中更改“我的网站”
    SPQuery DateTime 类型查询
    Asp.net Web Application 打开 SharePoint 2010 Site 错误 The Web application at could not be found
    How To Create SharePoint 2010 Site Collection In Its Own DB
    C# 文件打印
    面试题 java集合
    《深入理解Java虚拟机》(六)堆内存使用分析,垃圾收集器 GC 日志解读
    《深入理解Java虚拟机》(五)JVM调优
    《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具
  • 原文地址:https://www.cnblogs.com/kavilee/p/2724339.html
Copyright © 2011-2022 走看看