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

    注意:快排是不稳定算法

    无论是low,还是high,都是a[low]<=pivot ,a[high]>=pivot,等于号是包含的,也就是出现元素与pivot相等的时候,是不移动这个相等的元素的

    #include<iostream>
    using namespace std;
    int  Partition(int*arr,int low,int high);
    void quick_sort(int*arr,int low,int high){
        if(low<high){
            int mid=Partition(arr,low,high);
            quick_sort(arr,low,mid-1);
            quick_sort(arr,mid+1,high);
        }
    }
    int  Partition(int*arr,int low,int high){
        int pivot=arr[low];
        while(low<high){
           while(arr[high]>=pivot&&high>low)   //
                  high--;
            
           arr[low]=arr[high];
            
           while(arr[low]<=pivot&&high>low)   //
                  low++;
        
           arr[high]=arr[low];
           
        }
        arr[low]=pivot;
        return low;
    }
    int main(){
        int a[]={1,34,23,2,7,4,9};
        quick_sort(a,0,6);
    }

    while(arr[high]>=pivot&&high>low)
    high--;

    arr[low]=arr[high];

    while(arr[low]<=pivot&&high>low)
    low++;

    arr[high]=arr[low];

    两个都是包含等于的==,非常重要的一点

  • 相关阅读:
    WPF基础篇之静态资源和动态资源
    15-Node-数据库
    15-Node
    12-Git
    总-S04-03 项目-大事件
    00-PHP难点
    08-PHP基础
    15-ES6
    16-Vue-webpack
    00-Web难点
  • 原文地址:https://www.cnblogs.com/kkshaq/p/4518033.html
Copyright © 2011-2022 走看看