2016-12-08 9 views
-1

私はプログラミングには本当に新しいですし、エラーがどこにあるかわからない、キャストなしで整数からポインタになります分割エラー、は</p> <p>私はそれをコンパイルしようと、それはちょうど与える...

誰かが私を助けてくれますか?

size_t partition(int *data, size_t idx_left, size_t idx_right){ 
    int pivot; 
    int i; 
    int j; 
    pivot = data[idx_left]; 
    i = idx_left-1; 
    j = idx_right+1; 

while(1) 
{ 
    do 
    { 
     i= i+1; 
    }while(data[i]<pivot); 

    do 
    { 
     j =j-1; 
    }while(data[j]>pivot); 

    if (i>=j) 
    { 
     return j; 
    } 
    swap(pivot,data[i],data[j]); 
}} 


static inline void swap(int* data, size_t idx_left, size_t idx_right) 
{ 

    int temp; 
    temp = data[idx_right]; 
    data[idx_right] = data[idx_left]; 
    data[idx_left] = temp; 
} 
+2

ポイント、それはセグメンテーションフォルトではありません。とにかくそれを実行しようとするとおそらく1つを投げるだろうと思うが。 – Iluvatar

+1

スワップ関数は、 'swap(data [i]、data [j])'の代わりに 'swap(data、i、j)'のように動作します。スワップには、「i」、「j」、「ピボット」という3つのインデックスがありますが、一度に2つのアイテムを交換することしかできません。 –

答えて

1

今、あなたはスワップの定義を持っていること:オーダーの

swap(data, i, j) 
+0

そして、それを動かすために何をすべきですか? – NewUser2810

+0

スワップにint * dataパラメータの代わりに何を入れるべきですか?私は何をinitialiazeまたは通常ピボット? – NewUser2810

+0

@ NewUser2810 - スワップの定義が表示されるようになりました。私は答えを書き直しました – Hogan

関連する問題