2016-03-20 12 views
0

私はブック(ウィキペディアのもののように見える)から擬似コードを使用してクイックソートを実装しようとしましたが、それを動作させることができません。クイックソートがうまく機能しない

このソースコード:

pとrはbegginingと配列

、通話機能の終了です

int partitionare(int a[], int n, int p, int r) 
{ 
    int x, i, j, aux; 
    x = a[r]; // pivot 
    i = p - 1; 
    for (j = p; j < r; j++) 
    { 
     if (a[j] <= x) 
     { 
      i++; 
      aux = a[j]; 
      a[j] = a[i]; 
      a[i] = aux; 
     } 
    } 
    aux = a[i + 1]; 
    a[i + 1] = a[r]; 
    a[r] = aux; 
    return i + 1; 
} 
void quicksort(int a[], int n, int p, int r) 
{ 
    if (p < r) 
    { 
     int q = partitionare(a, n, p, r); 
     partitionare(a, n, p, q - 1); 
     partitionare(a, n, q + 1, r); 
    } 
} 

quicksort(a, n, 0, n-1); 

は、第2の気にしないでください。引数、n。これは単にテスト目的のためです。

+2

(機能partition()にない)再帰関数quicksort()内部Wikipedia article最後のコールに自分自身にしているAccoding?あなたのテスト入力にはどのような結果が見られますか? –

+0

アップス、申し訳ありませんが、私は言及するのを忘れました。 入力:2、8、7、1、3、5、6、4 出力:2,1,3,4,7,5,6,8 – Altair2033

答えて

1

あなたが働いていないとはどういう意味ですか

void quicksort(int a[], int n, int p, int r) 
{ 
    if (p < r) 
    { 
     int q = partitionare(a, n, p, r); 
     partitionare(a, n, p, q - 1);  /* recursive quicksort() here */ 
     partitionare(a, n, q + 1, r);  /* recursive quicksort() here */ 
    } 
} 
+0

私の神、それは動作します。それが私の本の中にあったのですが、実に私は目が見えませんでした。そしてこの問題は10時間かかった。あなた、救命救助者です。どうもありがとうございました。 :) – Altair2033

関連する問題