快速排序

快速排序算法思想:  

  快速排序的基本思想是:假设当前待排序的无序区为A[low……high],利用分治法描述为:

  1.找出基准点位置,pivotPos,使得{i | i<=pivotPos}的所有元素均小于pivot,并且{i | i>=pivotPos}的所有元素均大雨pivot的值。

  2.通过递归调用快速排序对左,右子区间进行快速排序,从而分治的得到结果。

  在实现快速排序的过程中,最重要的是划分算法和分治的思想。

快速排序代码:

  下面是该算法的代码描述:

//算法采用标准C++编写 #include <iostream> using namespace std; //划分算法。使得pivot左边的均小于它,右边的均大于它 int partition(int a[], int low, int high) { int pivot; int i,j; if(low < high) { i = low; j = high; pivot = a[low]; while(i < j) { while(i < j && a[j] >= pivot) j--; if(i < j) a[i++] = a[j]; while(i < j && a[i] <= pivot) i++; if(i < j) a[j--] = a[i]; } a[i] = pivot; return i; } else return -1; } //快速排序算法,运用了分而治之的思想 void quick_sort(int a[], int low, int high) { int pivot_pos; pivot_pos = partition(a, low, high); if(pivot_pos == -1) return; quick_sort(a, low, pivot_pos-1); quick_sort(a, pivot_pos+1, high); } //简单的测试用例 int main() { int data[] = {54,38,96,23,15,72,60,45,83}; quick_sort(data, 0, 8); for(int i = 0; i < 9; i++) cout << data[i] << "/t"; system("pause"); }   

你可能感兴趣的:(c,算法,测试,System,PIVOT)