閲覧ありがとうございます。
C言語超初心者です。
「基本交換法・基本挿入法をC言語でプログラミングせよ」という課題が出されました。
ググッてみたところ、乗っているのは数字を小さい順に並べるものばかりで、
作りたいのは数列(6 2 5 3 1 7 4)を大きい順に並べ直すというものです。
つまり(7 6 5 4 3 2 1)にしたいのですが、小さい数を右に右にずらすのではなく、
大きい数を左に左にずらすというのは可能でしょうか?
可能であれば、そのプログラムを教えていただきたいです。
できれば、学校で習っているのが下記の形から始めるというものなので、その形で書き始めていただけるとわかりやすいです。
#include <stdio.h>
void main(void)
その際、よろしければ説明(特にそれぞれの変数が何を指すのか)なども加えていただけると嬉しいです。
わがままばかりですいませんが、お力を貸してください><
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
>多分どちらも最後の出力の当たりがおかしいと思うのですが
変数iとjを見直してください。
>【バブルソート】
ANo.2で指示したとおりに変更されていません。
>【挿入ソート】
if(a[i-1]<tmp) と不等号を変更したように,
while(j>0&&a[j-1]>tmp); の a[j-1]>tmp も同様に不等号を逆にしてください。
指摘し忘れてました,失礼。
>doと&&は未学習なのですが、違う表記とかってできますか?
do~while(後判断)を while(前判断)に変更する方はともかく,
&&(かつ)による複合条件式が使えないと
自然な発想でコードが書けないし,
違う表記をしてもそれもまた未学習だとなる恐れがあるので,
私は今回はパスします。
No.2
- 回答日時:
▼バブルソート(無駄な処理がありますの方)
if(a[i]>a[i+1]){
tmp=a[i];
a[i]=a[i+1];
a[i+1]=tmp;
}
を次のように変更。
if(a[j]<a[j+1]){
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
▼挿入ソート
if (data[i-1] > tmp) {
の不等号を < に変更。
この回答への補足
ありがとうございます
参考にしたんですが、上手くできません。
多分どちらも最後の出力の当たりがおかしいと思うのですが・・・
何がおかしいですか?
【バブルソート】
#include <stdio.h>
void main(void)
{
int i,j,tmp;
int a[]={6,2,5,3,1,7,4};
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(a[i]<a[j+1])
{
tmp=a[j];
a[j] =a[j+1];
a[j+1]=tmp;
}
}
}
for(i=0;i<7;i++)
{printf(“%d “,a[j]);}
}
【挿入ソート】
#include <stdio.h>
void main(void)
{
int i,j,tmp;
int a[]={6,2,5,3,1,7,4};
for(i=1;i<7;i++)
{
tmp=a[i];
if(a[i-1]<tmp)
{
j=i;
do
{
a[j]=a[j-1];
j--;
}
while(j>0&&a[j-1]>tmp);
a[j]=tmp;
}
}
for(i=0;i<7;i++)
{printf(“%d “,a[j]);}
}
*それと、このソートで出てくるdoと&&は未学習なのですが、違う表記とかってできますか?
もしできたらでいいのですが…
No.1
- 回答日時:
>ググッてみたところ、乗っているのは数字を小さい順に並べるものばかり
そのコードが載っているURLを提示してください。
おそらく数か所を変更するだけで質問者が望むアルゴリズムになるでしょう。
この回答への補足
早速の回答ありがとうございます。
以下のURLで見つけました。
バブルソート
http://www.hrtdotnet.jp/pro/c/step3/step3_1.html
(無駄な処理がありますの方)
挿入ソート
http://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5% …
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- その他(プログラミング・Web制作) 変換のプログラムを教えてください。 6 2023/07/01 09:57
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのテーマのフォントが変わ...
-
インスタで誕生日の変更制限の...
-
至急!! X(旧Twitter)について...
-
自分の身元を隠す為に転籍届け...
-
チカ画を作ったんですけど、ツ...
-
Googleカレンダーのリマインダー
-
USBメモリの正式名称
-
印刷が片寄る…
-
Caps Lockが自動でONになって困...
-
ノートパソコンでマイクラをし...
-
windows10にてスリ~ぷ解除の原...
-
スリープ中でもOSのアップデー...
-
メールアドレスを新しいコンピ...
-
Wordの印刷設定をファイルごと...
-
カラーで印刷されない。
-
macで同じ画像を均等に一枚の紙...
-
ワードで中央揃えで入力しても...
-
Windows11 スリープではなく休...
-
WORDにてA4・2枚分がA3・1枚で...
-
差し込み印刷で封筒に文字が上...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのテーマのフォントが変わ...
-
至急!! X(旧Twitter)について...
-
【至急お願いいたします】faceb...
-
インスタで誕生日の変更制限の...
-
【Xの青バッジについて】 Xの青...
-
LINEに登録している電話番号が...
-
USBメモリの正式名称
-
パワーポイントにエクセルを貼...
-
都合により再投稿しました。 至...
-
画像(ビットマップ)のプロパ...
-
カーソルの位置を示す縦棒に色...
-
eバンクに友人の紹介で利用する...
-
インスタグラムに初めて登録し...
-
J-PhoneのJ-Mateの確認をWeb上で
-
LINEのIDを変更すると相手には...
-
Twitter の 良いニックネームな...
-
googleアカウントのプロフィー...
-
Wordである文字列を太字などに...
-
「X(旧Twitter)」が正式なサー...
-
印刷が片寄る…
おすすめ情報