链表的快速排序
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) 收藏 举报
浙公网安备 33010602011771号