2017-01-11 22 views
-1

私はあなたに配列の入力を与え、すべての要素を一度右にシフトさせたいという練習があります。配列内の要素を右にシフト

Input   |  Output 
1 2 3 4  |  4 1 2 3 

どうすればいいですか? コードは必須ではありませんアルゴリズムだけで十分です。
私が試みただけのもの

+0

@kraskevich私の質問を編集し、私が試したことを追加しました – user7387102

+0

'n/2'はあなたのコードのどこから来ますか?隣接する要素をある順序で入れ替えるというアイデアは正しいです。 – kraskevich

+0

@beaker私はそれを試しましたが、それは働かなかった – user7387102

答えて

0
for (int i = 0; i <n/2; ++i) 
    { 
     swap(ar[i],ar[i+1]); 
    } 

隣接する要素を交換するという考えが正しい(nは、配列の長さです)。最初の半分ではなく、すべてを通過する必要があります。次のようなものがあります。

for i = n - 2 downto 0 
    swap(a[i], a[i + 1]) 

となります。

+0

投稿する前にテストしましたか? – user7387102

+0

@ user7387102私はコードを実行しませんでした。しかし、それが正しいことを証明するのは簡単です。 – kraskevich

+0

よくやったけど、残念なことに答えは違った – user7387102

関連する問題