質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

135閲覧

cで挿入ソートを実装するとき

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/05/29 07:34

前提・実現したいこと

挿入ソートを実装したいです。表示させてない方が僕の書いたinsertionで、
上のinsertionとは違い、jだけでなくiもjと同様にインクリメントさせると
while(j>0)を抜けてくれません。whileのすぐ後のprintfではjは0と表示
されるのですが、どうして抜けてくれないのでしょうか。

発生している問題・エラーメッセージ

jが0のままで、forループが次の周に進まない (iが加算されず、よってjも加算されず、ということです)

該当のソースコード

c

1#include<stdio.h> 2#define NUM 5 3 4void insertionSort(int *p); 5 6int main(void) 7{ 8 int i=0; 9 int data[NUM] = {5, 3, 1, 2, 4}; 10 11 insertionSort(data); 12 13 for(i=0; i<NUM; i++){ 14 printf("%d ", data[i]); 15 } 16 17 return 0; 18} 19 20void insertionSort(int *p) 21{ 22 int i,j; 23 int buffer = 0; 24 25 for(i=0; i<NUM-1; i++){ 26 j=i+1; 27 while(j>0){ 28 if(p[j-1]>p[j]){ 29 buffer = p[j-1]; 30 p[j-1] = p[j]; 31 p[j] = buffer; 32 } 33 j--; 34 } 35 } 36 37 return ; 38} 39 40/*こっちが、僕の考えたほうです 41void insertionSort(int *p) 42{ 43 int i,j; 44 int buffer = 0; 45 46 for(i=0; i<NUM-1; i++){ 47 j=i+1; 48 while(j>0){ 49 if(p[i]>p[j]){ 50 buffer = p[i]; 51 p[i] = p[j]; 52 p[j] = buffer; 53 } 54 i--; 55 j--; 56 } 57 printf("j:%d\n", j); 58 } 59 60 return ; 61 } 62*/ 63

試したこと

j,j-1にして判定を行う(これがうまくいくことはしっています)

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

c

1j = i + 1; 2while( j > 0){ 3 i--; 4 j--; 5}

なので、当然抜けるときのi-1になります。

投稿2018/05/29 08:01

編集2018/05/29 08:01
asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/29 11:51

回答ありがとうございます。 大変失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問