链表的快速排序

 1 void quicksort(node* pbegin, node *pback)// 链表的快排
 2 {
 3     if (pbegin != pback)
 4     {
 5         node *pfen = fen(pbegin, pback);//取中间点
 6         quicksort(pbegin, pfen);//分段前面
 7         quicksort(pfen->pNext, pback);//后面
 8     }
 9 }
10 node *fen(node* pbegin, node *pback)// 分段
11 {
12     int key = pbegin->data;//以第一个数据为分段
13     node *p = pbegin;//第一个节点
14     node *q = pbegin->pNext;//第二个就诶点
15     while (q != pback)
16     {
17         if (q->data<key)
18         {
19             p = p->pNext;//循环下一个节点
20 
21             int temp = p->data;
22             p->data = q->data;
23             q->data = temp;//交换
24         }
25         q = q->pNext;//循环第二个指针
26         printf("\n\n");
27         showall(pbegin);
28     }
29     int temp = p->data;
30     p->data = pbegin->data;
31     pbegin->data = temp;//交换
32     printf("\n\n");
33     showall(pbegin);
34     return p;
35 }

 

posted on 2015-05-23 10:06  Dragon-wuxl  阅读(166)  评论(0)    收藏  举报

导航