zoukankan      html  css  js  c++  java
  • 【算法】【排序】【交换类】快速排序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;
    }
  • 相关阅读:
    动态表格
    Palindrome Number
    String to Integer (atoi) ???
    Reverse Integer
    Two Sum
    Path Sum
    Minimum Depth of Binary Tree
    Plus One
    Maximum Depth of Binary Tree
    Symmetric Tree
  • 原文地址:https://www.cnblogs.com/LPworld/p/11219841.html
Copyright © 2011-2022 走看看