#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; }
单链表快排
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.