この問題も分かりません。

選択整列法は安定か?挿入整列法とバブル整列法はどうか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

安定な整列法:選択法、挿入法


不安定な整列法:バブル整列法

安定か不安定かは、すでに回答されている通り、同じキーのものが整列後も同じ順番に並んでいるかどうかと言うことです。ご自分で確かめてください。
    • good
    • 0

No.1のahsblueさんの回答は、処理速度について述べられたものだと思いますが、



選択ソート:データ数のみに依存するため、一定。
挿入ソート
 ・配列で実装:サーチ法によらず、データの内容に大きく依存。(挿入時のシフトに時間がかかる。逆順列時最大)
 ・リストで実装:挿入にかかる時間は一定だが、リニアサーチのみになるため、データの内容に少し依存。(正順列時最大)
バブルソート:データ内容に大きく依存。(並びの交換に時間がかかる。逆順列時最大)
 ※ソート完了フラグをつけた場合、正順列ではクイックソートより早い。

です。
参考までに。
    • good
    • 0

ソーティングで「安定」とは、同じキーをもつ項目の順位がソーティ


ング前後で保たれるかという意味ですね。各ソーティング法のどれ
が安定かは、たいていのアルゴリズムの教科書に書いてあります。
たとえ書いてなくても、アルゴリズムそのものが理解できていれば、
例題を作って試してみることえ、安定かどうかわかります。
(あまり小さい例を作ると、安定でなくてもたまたま安定に見えた
りしますが)
    • good
    • 0

安定の意味が把握しきれませんが・・



選択法 = 安定
挿入法 = 安定しない
バブル = 安定

だと思います。
理由は、選択ソートの判定回数はバブルソートは全体数にのみ依存し、データ内容には依存しない。
挿入法ではデータ内容に依存するためです。
どうでしょうか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q挿入ソートとバブルソート

挿入ソートとバブルソートについて教えてください。どのようなアルゴリズムでソートされるのでしょうか?

Aベストアンサー

下記のページが参考になりませんか。

C言語によるアルゴリズム(コメント付き)http://www.sra.co.jp/people/miyata/algorithm/

並べ換えの問題
 http://www.cs.u-gakugei.ac.jp/~miyadera/Education/Lecture/ElecBook2/ptech17.htm

QC言語の問題です。よろしくお願いいたします。

C言語の問題です.。10個の整数を入力し配列に保存した後、入力された数字の中に5の倍数が含まれているかを調べ、 含まれていた時には「5の倍数が含まれています」含まれていない時に「5の倍数が含まれていません」と表示させるプログラムを作りなさい。
自分なりに考えて作ったのですが、以下の通りでよろしいのでしょうか?
#include <stdio.h>
main()
{
int i;
double c[10];
for (i = 0; i < 10; i++)
{
printf("整数を10個入力してください.(%d つ目) : ", i+1);
scanf("%lf", &c[i]);
}
if(c[i] % 5 == 0){
printf("5の倍数が含まれています\n");
}
else{
printf("5の倍数が含まれていません\n");
}
return 0;
}

Aベストアンサー

後半のif文で判定している箇所がよくないですね。
添字iを0から9まで廻して、c[i]が5で割り切れるかどうか判断しないとだめです。

後半の判定部分は、

for(i=0; i<9; i++ ){
if(c[i]%5 == 0){
break;
}
if(i==10){
printf("5の倍数が含まれていません\n");
}else{
printf("5の倍数が含まれています\n");
}

というような感じだと思います。(一例です)

QCのバブルソートに関する問題(超初級らしい)

int型配列{10,4,7,50,48,3}を昇順に並べて、順に標準出力しなさい

という問題を出されたのですが、今日はじめてC言語に(プログラミング自体はじめて)触れた私にとっては、まったくわからない問題です。

実行結果は



10
48
50
になるらしいのですが、どのようにプログラムを書いたらよいのかさっぱりわかりません。
どなたかご指導いただけたら幸いです。よろしくお願いします。

Aベストアンサー

参考にしてください。

参考URL:http://www.geocities.co.jp/SiliconValley-Oakland/1680/zsaru/zsaru07.html

Q情報処理の問題です。この問題の選択肢アイウエそれぞれどの様なものか具体的に根拠解説お願い致します 今

情報処理の問題です。この問題の選択肢アイウエそれぞれどの様なものか具体的に根拠解説お願い致します

今日は遅いので明日の朝の回答解説でも大丈夫です、
何卒よろしくお願い致します

Aベストアンサー

名称だけ。
ア.シェルソート
イ.クイックソート
ウ.バブルソート
エ.ヒープソート
それぞれの詳細はWeb検索などで調べてください。

Q挿入法

アルゴリズムの勉強をしているものです。挿入法をCで実装してみたのですがうまくいきません 汗
プログラムは6個の配列に任意の数を入力してそれをソートするものです。
実行結果が以下のようになりうまくいきません。自分ではどこがおかしい
原因かわからないので教えてください。

a[0]:4
a[1]:2
a[2]:3
a[3]:1
a[4]:5
a[5]:6
4 2 3 1 5 6・・をソートしますか? Yes:0 No:1 ---
0
2 3 1 4 5 6

////*挿入法*////

#include <stdio.h>

void insertion-sort(int a[],int n){

int i,j,t;

for(i=1;i < n;i++){
j = i;

while(a[j-1] > a[j]){
t = a[j];
a[j] = a[j-1];
a[j-1] = t;
j--;
if(j==0) break;
}
}
}
int main(void)
{
int k,j,sort[6];



for(k=0;k < 6;k++)
{printf("sort[%d]:",k); scanf("%d",&sort[k]);}

for(k=0;k < 6;k++)
printf("%3d",sort[k]);

puts("ソートしますか? Yes:1 No:0 ///");

scanf("%d",&j);

if(j==1){
insertion-sort(sort,6);
for(k=0;k < 6;k++) printf("%3d",sort[k]);

}
putchar('\n');

return(0);
}

アルゴリズムの勉強をしているものです。挿入法をCで実装してみたのですがうまくいきません 汗
プログラムは6個の配列に任意の数を入力してそれをソートするものです。
実行結果が以下のようになりうまくいきません。自分ではどこがおかしい
原因かわからないので教えてください。

a[0]:4
a[1]:2
a[2]:3
a[3]:1
a[4]:5
a[5]:6
4 2 3 1 5 6・・をソートしますか? Yes:0 No:1 ---
0
2 3 1 4 5 6

////*挿入法*////

#include <stdio.h>

void insertion-sort(int a[],int n){
...続きを読む

Aベストアンサー

>4 2 3 1 5 6・・をソートしますか? Yes:0 No:1 ---
>0

>if(j==1){
>insertion-sort(sort,6);

上記のとおり、実行例とソースに食い違いがあります。
何を信頼すればよいかわかりません。
実行例とソースの正確な内容を示してください。


人気Q&Aランキング

おすすめ情報