单链表快排

来源:互联网 发布:unity3d playmaker 编辑:程序博客网 时间:2024/06/03 23:07
#include <iostream>#include <ctime>using namespace std;struct Node {    int key;    Node *next;    Node(int nKey, Node *pNext) : key(nKey), next(pNext) { }};namespace kaze {    Node *quick_sort(Node *pb, Node *pe) {        int key = pb->key;        Node *l = pb, *h = pb->next;        while (h != pe) {            if (h->key < key) {                l = l->next;                swap(l->key, h->key);            }            h = h->next;        }        swap(l->key, pb->key);        return l;    }    void partition(Node *pb, Node *pe) {        if (pb != pe) {            Node *part = quick_sort(pb, pe);            partition(pb, part);            partition(part->next, pe);        }    }}int main() {    int len = 10;    srand((unsigned) time(NULL));    Node *head = new Node(0, NULL);    Node *last = head;    for (int i = 1; i < len; ++i) {        Node *node = new Node(rand() % (len * 2), NULL);        last->next = node;        last = last->next;    }    last = head;    for (int i = 0; i < len; ++i) {        cout << last->key << ' ';        last = last->next;    }    cout << endl;    kaze::partition(head, NULL);    last = head;    for (int i = 0; i < len; ++i) {        cout << last->key << ' ';        last = last->next;    }    cout << endl;    return 0;}
0 0
原创粉丝点击