zoukankan      html  css  js  c++  java
  • 非递归快排

    防鄙视系列

     1 #include<iostream>
     2 #include<deque>
     3 #include<utility>
     4 
     5 using namespace std;
     6 
     7 void norecursion_QuickSort(int*,int);
     8 int partition(int*,int,int);
     9 int main()
    10 {
    11     int buf[]={112,332,1,200,123,-1,23214};
    12     norecursion_QuickSort(buf,sizeof(buf)/4);
    13     int m;
    14     return 0;
    15 }
    16 
    17 void norecursion_QuickSort(int*buf,int amount)
    18 {
    19     
    20     typedef pair<int,int> range;
    21     deque<range>* pd=new deque<range>();
    22     int middle=partition(buf,0,amount-1);
    23     range lrg(0,middle-1),rrg(middle+1,amount-1);
    24     pd->push_back(lrg);
    25     pd->push_back(rrg);
    26 
    27     while(!pd->empty())
    28     {
    29         range rg=pd->front();
    30             pd->pop_front();
    31         if(rg.first<rg.second)
    32         {
    33             int mid=partition(buf,rg.first,rg.second);
    34             pd->push_back(range(rg.first,mid-1));
    35             pd->push_back(range(mid+1,rg.second));
    36 
    37         }
    38     }
    39 
    40     
    41 }
    42 
    43 int partition(int*buf,int p,int q)
    44 {
    45     int key=buf[q];
    46     int j=p-1;
    47 
    48     for(int i=p;i<q;i++)
    49     {
    50         if(buf[i]<=key)
    51             std::swap(buf[++j],buf[i]);
    52     }
    53     std::swap(buf[++j],buf[q]);
    54     return j;
    55 }
  • 相关阅读:
    Delphi防止同时出现多个应用程序实例CreateMutex
    DLL注入代码
    DLL注入代码
    C语言学习笔记
    随笔
    存储器简介
    随笔
    对偶问题的基本性质
    C语言学习笔记
    对偶问题的基本性质
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3313261.html
Copyright © 2011-2022 走看看