今はアルゴリズムについて学んでいます。さまざまなソート方法に戻って、各種類の数値を並べ替えるために各種類の比較を調べることをおすすめしました。このMerge Sortプログラムの内部でカウントを実装する必要がありますが、どこに行く必要があるか分からなくなっています。誰かが私を正しい方向に向けることができれば、本当に感謝しています。マージソートを使った計算の比較
//MergeSort.h
#include <iostream>
using namespace std;
void merge_sort(int A[], int low, int high);
void merge(int A[], int low, int mid, int high);
void merge_sort(int A[], int low, int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
merge_sort(A,low,mid);
merge_sort(A,mid+1,high);
merge(A,low,mid,high);
}
}
void merge(int A[], int low, int mid, int high)
{
int h, i, j, B[100], k;
h = low;
i = low;
j = mid + 1;
while ((h <= mid) && (j <= high))
{
if (A[h] <= A[j])
{
B[i] = A[h];
h++;
}
else
{
B[i] = A[j];
j++;
}
i++;
}
if (h > mid)
{
for (k = j;k <= high;k++)
{
B[i] = A[k];
i++;
}
}
else
{
for (k = h;k <= mid;k++)
{
B[i] = A[k];
i++;
}
}
for (k = low;k <= high;k++)
{
A[k] = B[k];
}
}
と
//MergeSort.cpp
#include <iostream>
using namespace std;
#include "MergeSort.h"
#include <ctime>
int main()
{
int A[1000], n = 100, i;
srand(time(NULL));
cout << "Here are " << n << " random numbers: \n";
for (i = 0; i < n; i++)
{
A[i] = rand() % 100;
cout << " " << A[i];
}
merge_sort(A, 0, n-1);
cout << "\n\nThe sorted array is: ";
for (int i=0;i<n;i++)
cout << A[i] <<" ";
cout<<endl<<endl;
system("pause");
}
あなたは 'qsort'ライブラリ関数に精通していますか?そのような場合は、マージソートに似たインターフェースが必要であると考えてください。つまり、比較関数が他の誰かによって作成され、引数として渡されました。あなたはその比較関数をどこに呼び出す必要がありますか? – user3386109
コードを試してみることに興奮していますが、アルゴリズムについて学んでいるなら、多くの良い説明と校正を含むこの無料の本を読むことをお勧めします。あなたのためのもの:http://jeffe.cs.illinois.edu/teaching/algorithms/。たとえば、「マージソート」のためのすべての注釈のpdfブックでfind-searchを実行します。 – user3773048