quick sort快速排序演算法過程詳解

2021-10-25 08:43:59 字數 693 閱讀 6741

quick_sort快速排序演算法過程詳解

快速排序演算法

void quick_sort(int *a,int l,int r)

//右邊的找到小於等於基準元素後,判斷右邊指標是否 越過 左邊指標,如果沒有,則把右邊指標指向的元素給賦值給最左邊的位置

//(因為設定基準元素為最左邊的元素,這時右邊指標已經找到了比基準小的元素了,應該把這個小的元素放到),然後左邊指標向右移動

if(i//到此時,已經完成了從右邊往左邊找的比基準小的行動了,接下來就要從操作左邊的

//接下來從左邊往右邊找比基準x大的元素

while(iif(i//這一次完了,再跳回到開頭的while迴圈,判斷i和j的關係,假如i還小於j,說明還沒遍歷完,需要繼續在此基礎上繼續遍歷

//假如i和j 的值相等了,則說明已經按照基準x,將整個陣列中比x大的元素都放到了右邊,比x小的元素都放到了x的左邊

} a[i] = x;//把基準元素x放在i和j相遇的地方,將陣列分成左右兩半,接下來進行遞迴呼叫排序函式,對左半邊和右半邊分別按同樣的方法進行排序

quick_sort(a,l,i-1);//對左半邊進行排序,i-1為左半邊的右邊緣,i已經是上一次排序基準x所在的位置了

quick_sort(a,i+1,r);//對右半邊進行排序,i+1為右半邊的左邊緣,同樣,i為上一次排序基準x所在的位置。

}//一直到l 和 r 都不滿足l

快速排序演算法QuickSort

quicksort.cpp 定義控制台應用程式的入口點。快速排序演算法實現 設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用第乙個資料 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。然後,對前面部分比它小的數繼續進行快速排序 ...

演算法 快速排序 quick sort

在前面介紹的排序演算法中,最快的排序演算法為歸併排序,但是歸併排序有乙個缺陷就是排序過程中需要o n 的額外空間。本文介紹的快速排序演算法時一種原地排序演算法,所需的額外空間複雜度為o 1 演算法介紹 快速排序其實一種根據需找某個元素的具體位置進行排序的方法。比如所存在如下陣列 選擇第乙個元素5,找...

演算法 快速排序(Quick Sort)

演算法定義 目前學習是五種排序 冒泡 插入 選擇 合併 快速 中,快速排序是最讓我喜歡的演算法 因為我想不到 其定義如下 演算法舉例 5,4,3,2,1 5,4,3,2,1 4,5,3,2,1 1,5,3,2,4 1,4,3,2,5 1,2,3,4,5 演算法實現 1 using system 2u...