zoukankan      html  css  js  c++  java
  • 经典算法学习:排序之快速排序

    快速排序

    快速排序和归并排序一样,都来自分治法的思想,由于快速排序在时间复杂度为O(n*logn)的几种排序算法中效率较高,因此被经常采用。

    快速排序的思想在实际的生活中经常遇到:有一堆面额不等的钞票,要把它们从小到大排序,首先可以找出一张作为基准,比它面额小的都放在左边,比它面额大的都放在右边,这时再把左右两边的进行二次处理,知道排序完成。

    快速排序的步骤可以总结为如下三步:

    1.找出一个基准数据

    2.把比该数据小的都放在该数据左边,比该数据大的都放在该数据右边

    3.重复步骤2,直到每个分组都只有一个数据


    代码:

    void quicksort(int s,int t,int a[])  
    {  
        int i=s,j=t,x=a[(i+j)/2],y;  
        print2(a,s,t);  
        do {  
            while(a[i]<x)  
                i++;  
            while(a[j]>x)  
                j--;  
            if(i<=j)  
            {     
                y=a[j];  
                a[j]=a[i];  
                a[i]=y;  
                i++;j--;  
            }     
        }while(i<j);  
        if(j>s)  
            quicksort(s,j,a);  
        if(i<t)  
            quicksort(i,t,a);  
    }  


  • 相关阅读:
    testd3p
    my open音频的
    1
    one play
    ndk ffmpeg实践2
    ndk ffmpeg实践
    Mac ndk21 交叉ffmpeg目前
    ffmpeg交叉
    and cmake 链接库及播放例子 及读文件
    更正之前《登录小案例》密码错3次15分钟内不准登录
  • 原文地址:https://www.cnblogs.com/tryitboy/p/4231133.html
Copyright © 2011-2022 走看看