一:顯示陣列的快速排序法
雙層冒泡。小於它的往左,大於它的往右
//陣列作為乙個引數會退化成一指標,
思路: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步,當快指標到達鍊錶末尾時,慢指標指向的鍊錶節點即為鍊錶的中點。對兩個子鍊錶分別排序。將兩個排序後的子鍊錶合併,得...