鍊錶快速排序

2021-08-11 14:47:16 字數 511 閱讀 5635

/*對陣列中的元素按照從小到大的順序快速排序*/

void quicksort(int * a,int left,int right)

/*left和right分別是雙向鍊錶開頭和結尾的元素指標*/

void ranklist(stu * left, stu * right)

while ((l != r) && (l->score >= value))

l = l->next;

if (l != r)

} while (l != r);

//將所有之前儲存的元素賦值

l->score = value;

//在遞迴之前判斷是否繼續進行遞迴

if (l!=left)

ranklist(left,l->front);

if (r!=right)

ranklist(r->next,right);

}

鍊錶的快速排序

感覺鍊錶的快速排序也挺好寫的,甚至比陣列更容易理解,但不知道為什麼看到很多人都說快排不適合單鏈表結構的資料。取第乙個元素為哨兵,遍歷鍊錶,將小於 等於 大於的元素分成3個子鍊錶 遞迴整理 小於 鍊錶 遞迴整理 大於 鍊錶 將3個鍊錶連線起來。實現如下 鍊錶快速排序,返回最後乙個元素的位址 mynod...

鍊錶劃分 引申到快速排序

題目 給定乙個鍊錶和乙個值x,將鍊錶劃分成兩部分,使得劃分後小於x的結點在前,大於等於x的結點在後。在這兩部分中要保持原煉表中的出現順序。如 給定鍊錶1 4 3 2 5 2和x 3,返回 1 2 2 4 3 5。新建兩個指標p1和p2。遍歷一遍鍊錶 第乙個1 比3小,放在p1後面 p1 1 第二個4...

python 單向鍊錶實現快速排序

快速排序的基本思想 從序列當中選擇乙個基準數 在這裡我們選擇序列當中第乙個數作為基準數 將序列當中的所有數依次遍歷,比基準數大的位於其右側,比基準數小的位於其左側 重複步驟1.2,直到所有子集當中只有乙個元素為止。以 4,2,5,3,7,9,0,1 為例,我們來模擬一趟快排的過程。1 初始化時,i指...