C++でテキストファイルに入力した整数をマージソートで昇順に羅列するプログラムを作成したいのですが、今のままではソートされずに入力した整数がそのまま表示されます。
C++
1#include <iostream> 2#include <vector> 3 4using namespace std ; 5typedef vector<int> ARRAY ; 6 7static void merge_sort(ARRAY & data, int i, int j){ 8 if (i>=j) return; 9 int k = i; 10 int mid = (i+j)/2; 11 int n = mid + 1; 12 13 merge_sort(data, i, mid); 14 merge_sort(data, n, j); 15 16 ARRAY temp; 17 for(;;){ 18 if(data[i] <= data[n]){ 19 temp.push_back(data[i]); 20 i++ ; 21 if(i>mid){ 22 for(;n<=j;n++) temp.push_back(data[n]); 23 break ; 24 } 25 }else{ 26 temp.push_back(data[n]); 27 n++; 28 if(n>j){ 29 for(;i<=mid; i++) temp.push_back(data[i]); 30 break; 31 } 32 } 33 } 34} 35int main (){ 36 ARRAY data ; 37 int i ; 38 while(cin >> i) data.push_back(i) ; 39 int n = data.size() ; 40 merge_sort(data,0,n-1) ; 41 for( auto i : data) cout << i << endl ; 42 return 0 ; 43} 44
このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください

回答2件
あなたの回答
tips
プレビュー