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

    一.简介

    二.C语言版本

    //C语言版本
    void sort(int* a,int left,int right){
        
    
        if(left>=right){
            return;
        }
    
        int i=left;
        int j=right;
        int key=a[left];
    
        while(i<j){
            while(i<j && key<=a[j]){
                j--;
            }
            a[i]=a[j];
        
            while(i<j && key>=a[i]){
                i++;
            }
            a[j]=a[i];
        }
    
        a[i]=key;
        sort(a,left,i-1);
        sort(a,i+1,right);
    }

    二.C++版本

    //C++版本
    
    #include <iostream>
    
    using namespace std;
    
    void Qsort(int arr[],int low,int high){
        
        if(high<=low)
            return;
    
        int i=low;
        int j=high+1;
        int key=arr[low];
    
        while(true){
            
            //从左向右找比key大的值
            while(arr[++i]<key){
                if(i==high){
                    break;
                }
            }
    
            //从右向左找比key小的值
            while(arr[--j]>key){
                if(j==low){
                    break;
                }
            }
    
            if(i>=j)
                break;
    
            int temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
    
        int temp=arr[low];
        arr[low]=arr[j];
        arr[j]=temp;
        Qsort(arr,low,j-1);
        Qsort(arr,j+1,high);
    }
    
    int main(){
        int a[]={57,68,59,52,72,28,96,33,24};
        Qsort(a,0,sizeof(a)/sizeof(a[0])-1);
        
        for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){
            cout<<a[i]<<"";
        }
        
        return 0;
    }
  • 相关阅读:
    第三发
    第二发
    第一发
    要看的算法
    haxe坑
    TCP/IP协议三次握手与四次握手流程解析(转)
    Android动态类生成预加载-dexmaker使用
    Java中ArrayList 、LinkList区别
    Java解析YAML和Android解析YAML
    Java sax、dom、pull解析xml
  • 原文地址:https://www.cnblogs.com/k5bg/p/11064637.html
Copyright © 2011-2022 走看看