快排

#include <iostream>

using namespace std;

void Qsort(int a[], int low, int high)
{
    if(low >= high)
    {
        return;
    }
    int first = low;
    int last = high;
    int key = a[first];/*用字表的第一個記錄作爲樞軸*/

    while(first < last)
    {
        while(first < last && a[last] >= key)
        {
            --last;
        }

        a[first] = a[last];/*將比第一個小的移到低端*/

        while(first < last && a[first] <= key)
        {
            ++first;
        }

        a[last] = a[first];    
/*將比第一個大的移到高端*/
    }
    a[first] = key;/*樞軸記錄到位*/
    Qsort(a, low, first-1);
    Qsort(a, first+1, high);
}
int main()
{
    int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24};

    Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);/*這裏原文第三個參數要減1否則內存越界*/

    for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
    {
        cout << a[i] << "";
    }

    return 0;
}
#include <bits/stdc++.h>
using namespace std;

int a[205];

void qsort(int low,int hight)
{
    if(low>=hight) return;
    int first=low;
    int last=hight;
    int key=a[first];
    while(first<last){
         while(first<last&&a[last]>=key)
             last--;
         a[first]=a[last];
         while(first<last && a[first]<=key)
             first++;
         a[last]=a[first];
    }
    a[first]=key;
    qsort(low,first-1);
    qsort(first+1,hight);
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    qsort(0,n-1);
    for(int i=0;i<n;i++)
        cout<<a[i]<<(i==n-1?"\n":" ");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章