但是當輸入有相同元素時,輸出就會有問題!該怎麼解決呢?
或者更通用一點的**是什麼樣的呢?
下次再編輯!
隨機快速排序
#include
#include
#include
using namespace std;
void quicksort(int * arr, int num1,int num2);//對陣列arr[num1--num2]排序
void swap(int &, int &);
void print(int * a, int n, int m);
int main()
;quicksort(m, 0, sizeof(m) / sizeof(int)-1);
for (int i = 0; i < sizeof(m) / sizeof(int); ++i)
cout << m[i] << "\t";
cout << endl;
return 0;
}void quicksort(int * arr, int num1, int num2)
quicksort(arr, num1, i - 1);
quicksort(arr, i + 1, num2);
}void swap(int& m, int &n)
void print(int * a, int n, int m)
演算法導論中的快速排序演算法的實現:
#include
#include
#include
using namespace std;
void quicksort(int * arr, int num1,int num2);//對陣列arr[num1--num2]排序
void quicksort_al(int * arr, int num1, int num2);
void swap(int &, int &);
void print(int * a, int n, int m);
int main()
;cout << "the original of array:\n";
for (int i = 0; i < sizeof(m) / sizeof(int); ++i)
cout << m[i] << "\t";
cout << "\nthe algorithms of introduct quicksort:\n";
quicksort_al(m, 0, sizeof(m) / sizeof(int)-1);
for (int i = 0; i < sizeof(m) / sizeof(int); ++i)
cout << m[i] << "\t";
cout << endl;
return 0;
}void quicksort(int * arr, int num1, int num2)
quicksort(arr, num1, i - 1);
quicksort(arr, i + 1, num2);
}void quicksort_al(int * arr, int num1, int num2)//演算法導論裡快速排序演算法
}swap(arr[++i], arr[num2]);
quicksort_al(arr,num1, i-1);
quicksort_al(arr, i+1, num2);
}void swap(int& m, int &n)
void print(int * a, int n, int m)
C 實現的快速排序演算法
c 快速排序講解 演算法 首先說說快速排序,現在網上很多快速排序的解釋,我也談談我自己對快速排序的了解和看法。快速排序是一種很高效的排序演算法,它的核心思想是 在要排序的陣列中,先選定乙個數 一般是第乙個數或者最後乙個數,就叫它x 以x為標準,進行一次排序,排序的結果是以x為中間值,比它大或小的值都...
演算法 快速排序的c 實現
快速排序的思想 設定兩個左右哨兵,每次取最左邊的數作為基準數,然後先移動右哨兵,找出第乙個比基準數小的數 之後然後移動左哨兵,找到第乙個比基準數大的數,此時交換兩個哨兵指向的數,然後繼續移動重複上述過程,直到兩個哨兵重合,交換基準數與哨兵指向的數。再接著對基準數的左右兩邊分別重複上述過程 可用遞迴實...
快速排序演算法 c 實現
namespace backpackproblem backpack bp new backpack profit int start 0 int end profit.length 1 bp.quicksort profit,start,end bp.print class backpack 快速...