前提
C++でクイックソートを実装しようとしています。
実現したいこと
昇順に配列をクイックソートしたいのですが、ここまで書いたコードの何が間違っているのか把握したいです。
発生している問題・エラーメッセージ
値が返ってきません。
該当のソースコード
C++
1#include<bits/stdc++.h> 2using namespace std; 3#include<time.h> 4 5int partition(vector<int>&A, int l, int r, int pivot){ 6 for(;;){ 7 while(A[l] < pivot){ 8 l++; 9 } 10 while(A[r] >= pivot) { 11 r--; 12 } 13 if(l > r) { 14 return l; 15 break; 16 } 17 swap(A[l], A[r]); 18 } 19} 20 21void QuickSort(vector<int>&a, int i, int j){ 22 if(i >= j) return; 23 int pivot; 24 bool t = 0; 25 for(int n = i; n <= j; n++) { 26 if(a[n] != a[n+1]) { 27 pivot = max(a[n], a[n+1]); 28 t = 1; 29 } 30 } 31 if (t=0) return; 32 int k = partition(a,i,j,pivot); 33 QuickSort(a,i,k-1); 34 QuickSort(a,k+1,j); 35} 36 37int main() { 38 int N = 5; 39 vector<int> data = {2,1,4,5,3}; 40 clock_t start = clock(); 41 QuickSort(data,0,N-1); 42 clock_t end = clock(); 43 cout << (double)(end - start) << endl; 44}
試したこと
コード例を参考にしつつ怪しい部分を書き直しました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー