合計 昨日 今日

クイックソートでコンパイルできません

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: もとき
[URL]
Date: 2017年12月04日(月) 22:42
No: 1
(OFFLINE)

 クイックソートでコンパイルできません

下記の乱数を100個発生させ、クイックソートし昇順に10個ずつ並べるプログラムをvisualstudioでコンパイルしたところ
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー (アクティブ) E0165 関数呼び出しの引数が少なすぎます
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー C2660 'QuickSort': 関数に 2 個の引数を指定できません。
という2つのエラーが発生しました。手に負えないので修正点を教えていただけないでしょうか。よろしくお願いします。


コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_DATA 100
 
void QuickSort(int num[], int begin, int end);
void datasee(int num[], int n);
int main(void);
 
//バブルソートを降順に行い、並び替え終了回数を表示//
void QuickSort(int num[], int begin, int end)
{
    int i = begin;
    int j = end;
    int pivot;
    int temp;
 
    pivot = num[(begin + end) / 2];  // 中央の値をpivotにする
 
    while (1)
    {
        while (num[i] < pivot) { ++i; }  /* 枢軸以上の値が見つかるまで右方向へ進めていく */
        while (num[j] > pivot) { --j; }  /* 枢軸以下の値が見つかるまで左方向へ進めていく */
        if (i >= j)break;  // 軸がぶつかったらソート終了
 
                           // 入れ替え
        temp = num[i];
        num[i] = num[j];
        num[j] = temp;
        i++;
        j--;
    }
 
    // 軸の左側をソートする
    if (begin < i - 1) { QuickSort(num,begin, i - 1); }
    // 軸の右側をソートする
    if (j + 1 < end) { QuickSort(num, j + 1, end); }
}
 
 
 //乱数を10個ずつ並べる//
void datasee(int num[], int n)
{
    int i = 1;
    while (n--) {
        printf("%3d  ", *num++);
        i++;
        if (n % 10 == 0) {
            printf("\n");
        }
    }
    printf("\n");
}
 
 
//乱数を生成し、Befor,Afterを表示//
int main(void)
{
    int num[100], i;
    srand((unsigned)time(NULL));
 
    for (i = 0; i < NUM_DATA; i++) {
 
        num[i] = rand();
 
    }
 
    printf("(Before)\n");
    datasee(num, NUM_DATA);
    printf("\n");
 
 
    QuickSort(num, NUM_DATA);
    printf("\n");
 
 
    printf("(After)\n");
    datasee(num, NUM_DATA);
    printf("\n");
 
}

Name: みけCAT
[URL]
伝説なるハッカー(685,415 ポイント)
Date: 2017年12月04日(月) 23:42
No: 2
(ONLINE)

 Re: クイックソートでコンパイルできません

73行目の
コード[C++]: 全て選択
1
    QuickSort(num, NUM_DATA);

コード[C++]: 全て選択
1
    QuickSort(num, 0, NUM_DATA - 1);
とすればいいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Name: CA
[URL]
Date: 2017年12月06日(水) 14:30
No: 3
(OFFLINE)

 Re: クイックソートでコンパイルできません

参考になるか分かりませんが、どうぞ。
VS2017を使用しています。

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<cstdlib>
#include<iostream>
#include<random>
 
using namespace std;
 
/*
* double比較関数、降順にソート。
*/
int double_ddd(const double* a, const double* b)
{
    return *a < *b ? 1 : *a > *b ? -1 : 0;
}
 
 int main()
 {
 
     int nx = 10;
     double* x = new double[nx]; // 配列を生成します。
 
     /*
     * メルセヌ・ツイスタ
     */
     random_device rnd;
     mt19937 mt(rnd());
     uniform_int_distribution<int>rand5(0, 9);
 
 
 
     for (int ii = 0; ii <= nx; ii++)
     {
         for (int i = 0; i < nx; i++)
         {
             x[i] = rand5(mt);
         }
         qsort(x, nx, sizeof(double), reinterpret_cast<int(*)(const void*, const void*)>(double_ddd));
 
         for (int i = 0; i < nx; i++)
         {
             cout << " " << x[i];
         }
         cout << endl;
     }
    system("pause");
 
}

Name: CAFD
[URL]
ぴよぴよ(10 ポイント)
Date: 2017年12月06日(水) 16:06
No: 4
(OFFLINE)

 Re: クイックソートでコンパイルできません

oh...上のソースコードは間違いだらけでした...申し訳ないです。

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,489,942 ポイント)
Date: 2017年12月06日(水) 20:59
No: 5
(OFFLINE)

 Re: クイックソートでコンパイルできません

うちのサイトでクイックソート解説アプリなるものを配布しているのでよかったらどうぞ
http://dixq.net/sort.html


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[11人]