9 1 8 陣列與鍊錶的快速排序法

2021-07-25 22:04:58 字數 556 閱讀 4669

一:顯示陣列的快速排序法

雙層冒泡。小於它的往左,大於它的往右

//陣列作為乙個引數會退化成一指標, 

思路:if(p[j]<10)   

i++ 

swap(p[i],p[j]) 互換     j的作用是找到最左邊第乙個小於10的數

}舉例:

void show(int *p,int length)//length是帶下標的

}//接下來實現它的快速排序

void qsort(int *p,int start,int end)

}//第乙個元素和第i個元素對調

int temp = p[i];

p[i] = p[start];

p[start] = temp;

qsort(p,start,i-1);

qsort(p,i+1,end);}}

void main()

;show(a,9);//9恰好迴圈10次

qsort(a,0,9);

show(a,9);

system("pause");

}

鍊錶的快速排序

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

鍊錶快速排序

對陣列中的元素按照從小到大的順序快速排序 void quicksort int a,int left,int right left和right分別是雙向鍊錶開頭和結尾的元素指標 void ranklist stu left,stu right while l r l score value l l ...

C 歸併法 快速排序實現鍊錶排序的方法

我們可以試用歸併排序解決 對鍊錶歸併排序的過程如下。找到鍊錶的中點,以中點為分界,將鍊錶拆分成兩個子鍊錶。尋找鍊錶的中點可以使用快慢指標的做法,快指標每次移動 2 步,慢指標每次移動 1步,當快指標到達鍊錶末尾時,慢指標指向的鍊錶節點即為鍊錶的中點。對兩個子鍊錶分別排序。將兩個排序後的子鍊錶合併,得...