五種常見排序就是:冒泡 插入 選擇 快速排序 歸併排序
排序和查詢的關係:排序是查詢的前提 排序是重點
在這裡,快速排序,顧名思義,排序速度較快,但是較為複雜,但是遞迴這個思想,說簡單但是也有些繞,說難也就幾行**的問題。
先確定無序陣列裡的某乙個元素在有序裡的位置,這樣就把陣列分成兩半無序陣列
每一半也按照之前的方法……遞迴思想
定義兩個變數分別接收第乙個元素和最後乙個元素
定義乙個臨時變量val存放第乙個元素的值
定義兩個指標l、h分別指向第乙個元素位址和最後乙個元素位址
以下的操作中,每賦值完一次後,就停止指標的移動。交替移動指標。比如h指標的元素賦值給了l指向的元素,h指標就不動了,需要移動的是l指標。下次l指向的元素賦值給了h指向的元素,l指標就不動了,移動h指標。
由於是公升序,若h指向的元素比l指向的元素小(7<9),就把h指向的元素賦值給l指向的元素。此時l指向的元素是7
若此時l指向的元素比val小(7<9),就繼續往後移一位。
此時l指向的元素比val小(0<9),繼續後移一位
此時l指向的元素比val小(8<9),繼續後移一位
此時l指向的元素比val大(10>9),為了把大的元素往後排,就把l指向的元素賦值給h指向的元素,此時h指向的元素是10
此時h指向的元素比val大(10>9),往前面移一位
此時h指向的元素比val大(13>9),往前面移一位
此時h指向的元素比val小(2<9),為了把小的元素往前排,就把h指向元素賦值給l指向的元素,此時l指向的元素的2
l指標繼續之前的操作,最終l、h指向同乙個元素位址,就是存放9的位置
//第二個形參表示陣列第乙個元素下標,第三個形參表示陣列最後乙個元素下標
12//
表示從頭至尾的排序,可以修改形參區間,也就是排序區間
1314
for(i=0;i<6;i++)
1718
return0;
19}2021
void quicksort(int * a,int low,int
high)30}
3132
int findpos(int * a,int low,int
high)
40 a[low]=a[high];
4142
while(lowval)
45 a[high] =a[low];
46 }//
終止while迴圈後low==high
4748 a[low] =val;
49return low; //
high也行
50 }
新手講排序 詳細講解快速排序
quick sort int a,int start,int end int i start j end pivot 一.先選擇乙個基準pivot,3種選擇方式 1.固定位置,開頭或結尾或中間 2.隨機位置,採用隨機數產生start和end之間的數 3.平衡位置,即從開頭結尾中間三個數中選擇他們的中...
快速排序講解
高快省的排序演算法 有沒有既不浪費空間又可以快一點的排序演算法呢?那就是 快速排序 啦!光聽這個名字是不是就覺得很高階呢。假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了,就是乙個用來參照的數,待會你就知道它...
快速排序 氣泡排序 交換類排序 講解
每一趟排序選擇當前序列中的第乙個關鍵字 通常是第乙個 作為樞紐,而快速排序要做的就是把比樞紐小的關鍵字交換到樞紐前面,比樞紐大的關鍵字交換到樞紐後面。本趟排序完後會生成新的子串行,而子串行會成為下一趟排序的初始序列。通過例子來講明快速排序的規則 總結而言就是 首為樞紐,左i右j,先j後i,j從右向左...