2017-01-30 8 views
1
#include <iostream> 
#include <string> 

int inversions = 0; 

using namespace std; 

void merge(int arr[], int start, int mid, int end){ 
    //  int  
} 

void merge_sort(int arr[], int start, int end){ 

    int mid = 0; 
    while(start < end) 
    {  
     mid = end + (end - start)/2; 
     merge_sort(arr, start, mid); 
     merge_sort(arr, mid + 1, end); 
     merge(arr, start, mid, end); 
    } 
} 

int main(){ 

    int arr[6] = {233,5,1,33,66}; 
    merge_sort(arr, 0, 5); 
    return 0; 
} 

私はマージソートを実装しようとしていますが、逆転の回数を見出そうとしていますが、seg faultというエラーが表示されています。プログラムはまだ完全ではありません。誰かが私が持っているプログラムに間違っていることを示唆することはできますか?とても感謝しております。以下のプログラムのセグメンテーションフォルト

+2

あなたは書くべき? –

+0

これは申し訳ありませんが、比較的新しいプログラミングです。 GDBを使用しましたが、何が間違っているのか分かりません。 – Phaneeth

+0

あなたはこれについて確かですか? 'mid = end +(end - start)/ 2;' –

答えて

1

この文

mid = end + (end - start)/2; 

の式が間違っています。デバッガで、あなたのコードをステップ実行してみてくださいました

mid = (end + start)/2; 
+0

ありがとう、それは動作するはずです。 – Phaneeth

関連する問題