1. 程式人生 > >C-單鏈表-快速排序,冒泡排序

C-單鏈表-快速排序,冒泡排序

快速排序 冒泡排序 單鏈表

struct ST_QUEUE { int data; struct ST_QUEUE* pNext; // 指針域 }; typedef struct ST_QUEUE Queue; void swapNode(Queue *p1, Queue *p2) { Queue* tmp = (Queue*)malloc(sizeof(Queue)); tmp->data = p1->data; p1->data = p2->data; p2->data = tmp->data; } Queue* getEnd(Queue* que) { if (que == NULL || que->pNext == NULL) return que; while (que->pNext != NULL) { que = que->pNext; } return que; } // 快速排序 void quicksort(Queue* pHead, Queue* pEnd) { if (NULL == pHead || NULL == pEnd || pHead == pEnd) { return; } Queue* p1 = pHead; Queue* p2 = p1->pNext; int pivot = pHead->data; while (p2 != pEnd->pNext && p2 != NULL) { if (p2->data > pivot) { p1 = p1->pNext; swapNode(p1, p2); } p2 = p2->pNext; } swapNode(pHead, p1); quicksort(pHead, p1); quicksort(p1->pNext, pEnd); } // 冒泡排序 void bubblesort1(Queue* que) { if (que == NULL || que->pNext == NULL) return que; // 冒泡排序 for (Queue* p1 = que; p1 != NULL; p1 = p1->pNext) { for (Queue* p2 = p1->pNext; p2 != NULL; p2 = p2->pNext) { if (p1->data < p2->data) { swapNode(p1, p2); } } } } // 遞歸冒泡排序 void bubblesort2(Queue* head){ if (head == NULL ) { return; } Queue* p = head->pNext; while (p != NULL){ if (p->data > head->data){ swapNode(head, p); } p = p->pNext; } bubblesort2(head->pNext); }

C-單鏈表-快速排序,冒泡排序