i記錄陣列左邊元素的下標,j記錄陣列最右邊元素的下標,將陣列左邊第乙個數記錄在臨時變數temp中,
然後從最右邊開始找,找第乙個比temp小的數,找到後將這個數賦給i所在下標的位置,然後從左邊再開始找,
找第乙個比temp大的元素,找到後將這個數賦給j所在的下標,如果i還是小於j,繼續重複以上動作,直到i == j為止,
此時將temp賦給i所在的下標。此時temp左邊都是比它小的,temp右邊都是比它大的。
void quick(int *arr, int left, int right)
arr[i] = temp;
//左邊有未排序的
if (i - left > 1)
//右邊有未排序的
if (right - i > 1) }
void quicksort(int *arr, int len)
int main()
; for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
cout << endl;
quicksort(array, sizeof(array) / sizeof(array[0]));
for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
system("pause");
return 0;
}
C語言實現快速排序
快速排序,是氣泡排序的改進,通過尋找 中間元素 在一趟排序中,把比 中間元素 小的數放到左邊,比 中間元素 大的數放到右邊,如此遞迴,最終得到排序結果。include define num 5 void quick sort int a,int left,int right void swap in...
c語言實現快速排序
快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽結束...
快速排序 C語言實現
以前使用rm時,ruby指令碼提供乙個sort函式,可以把陣列進行排序,後來得知採用的演算法是快速排序。隨著資料結構課程的學習,快速排序如今也不再神秘,如下 using namespace std void quicksort int a,int low,int high int first low...