算法排序交换类快速排序QuickSort

Posted lpworld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法排序交换类快速排序QuickSort相关的知识,希望对你有一定的参考价值。

#include<stdio.h>

//快速排序 

int main()
    int a[]=2,1,5,4,3,8,9,6,7;
    int* b=a-1+sizeof(a)/4;            //基准指针 
    int* i=a-1;                        //慢指针 
    int* j=a;                        //快指针 
    int QS(int* tb,int* ti,int* tj);
    QS(b,i,j);
    
    for(int k=0;k<sizeof(a)/4;k++)
        printf("%d ",a[k]);
    


//QuickSort 
int QS(int* tb,int* ti,int* tj)
    //如果数组空或只有一个数不用排序 
    if(tb<=tj)
        return 0;
    
    void swap(int *ti2,int* tj2);
    int* b=tb;
    int* i=ti;
    int* j=tj;
    int* t=ti;
    while(true)
        if(*j<*b)
            i++;
            swap(i,j);
            j++;
        else
            j++;
        
        if(j==b)
            i++;
            swap(i,j);
            break;
        
    
    //判断左区是否还可以运算 
    if(i>t+1) 
        QS(i-1,t,t+1);
    
    //判断右区是否还可以运算 
    if(b>i+1)
        QS(b,i,i+1);    
     


//交换两个指针的数据 
void swap(int *ti2,int* tj2)
    int t=*ti2;
    *ti2=*tj2;
    *tj2=t;

 

以上是关于算法排序交换类快速排序QuickSort的主要内容,如果未能解决你的问题,请参考以下文章

js算法-快速排序(Quicksort)

排序算法——快速排序

2. 快速排序 Quicksort

小白懂算法之快速排序

排序算法之快速排序

快速排序--java实现