首页 > 代码库 > 双向快速排序

双向快速排序

#include <iostream>using namespace std;void swap(int* p,int* q){    int temp = *p;    *p = *q;    *q = temp;}//快速排序int partition(int *ptr,int first, int last){    int temp = ptr[first];    int i = first + 1, j = last;    while(i < j)    {        while(ptr[i] < temp && i <= last)            ++i;        while(ptr[j] > temp)            --j;        if(i < j)        {            swap(&ptr[i],&ptr[j]);            ++i;            --j;        }            }        swap(&ptr[first],&ptr[j]);    return j;} void quickSort(int *ptr,int first,int last){    if(first < last)    {        int q = partition(ptr,first,last);          quickSort(ptr,first,q-1);        quickSort(ptr,q+1,last);    }}int main(){    int a[] = {2,23,45,1,8,2,0};     for(int i =0; i <= 6; ++i)    {        std::cout << a[i] << " ";    }    cout << endl;    //mergeSort(a,0,6);    quickSort(a,0,6);    for(int i =0; i <= 6; ++i)    {        std::cout << a[i] << " ";    }    std::cout << std::endl;    return 0;}

 

双向快速排序