快速排序 Quick Sort

2021-09-10 10:58:36 字數 953 閱讀 2932

#include

using namespace std;

void quicksort1(int iarray, int left, int right)

//開始進行快排演算法

//首先我們先儲存left索引對應的資料  當前資料作為切割陣列的軸

int piovt = iarray[left];

//定義臨時變數儲存陣列2端的索引

int leftindex = left;

int rightindex = right;

while (leftindex < rightindex)

else

}//從左邊開始搜尋乙個比軸值更大的數填寫上次留下的坑

while (leftindex < rightindex)

else}}

iarray[leftindex] = piovt;

quicksort1(iarray, left, leftindex - 1);

quicksort1(iarray, rightindex + 1, right);

}template

void quicksort(t* a, const int left, const int right)

while (a[i] > pivot)

if (i < j) swap(a[i], a[j]);

} while (i < j);

swap(a[left], a[j]);

//遞迴

//左quicksort(a, left, j - 1);

//右quicksort(a, j+1,right);}}

int main()

;//最後多加乙個數

quicksort1(k, 0, 9);

for (int i = 0; i < 10; i++)

return 0;

}

快速排序 QuickSort

快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...

快速排序 quicksort

快速排序 quicksort 是分治法的典型例子,它的主要思想是將乙個待排序的陣列以陣列的某乙個元素x為軸,使這個軸的左側元素都比x大,而右側元素都比x小 從大到小排序 然後以這個x在變換後陣列的位置i分為左右兩個子陣列,再分別進行快速排序,直到子陣列中只有乙個元素為止。快速排序演算法如下 void...

快速排序 QuickSort

1,void quicksort int a,int low,int high 這個函式是排序的遞迴部分,mid就是已經確定的基準元素的位置。2,int partition int a,int low,int high 這個函式幹了兩件事 1 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...