2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語 バブルソート

1 :あおい☆彡:05/01/02 21:41:08
配列に代入された数値を小さい順に並べ変えるプログラムを作りなさい。

ただし、数値は配列numbers[]にすでに代入されているものとし、変数nには代入された数値の個数が代入されているものとする。
(例)
int numbers[10] = { 82, 47, 2, 29, 95, 15, 38, 66, 51, 72 };
int n = 10;
上記のようにすると、その出力は、
2, 15, 29, 38, 47, 51, 66, 72, 82, 95
となる。

バブルソートの問題なんですが全然わかりません!
C言語わかる人教えてください!
お願いします(>m<)


2 :デフォルトの名無しさん:05/01/02 21:42:16
惚れた

3 :デフォルトの名無しさん:05/01/02 21:50:13
>>3
わろた


4 :デフォルトの名無しさん:05/01/02 21:51:14
>>1
ぁぉぃちゃんの年齢、スリーサイズ教えてくれたら
やさしいおにいちゃんが答えてくれるかもよ。

5 :あおい☆彡:05/01/02 21:59:14
>>4
年齢:19
スリーサイズ:上から 76, 58, 81 です。
よろしくお願いします


6 :デフォルトの名無しさん:05/01/02 22:09:06
メモ付き乳もないのに、よく相手してるなおまいら

7 :デフォルトの名無しさん:05/01/02 23:11:15
>>5のようにすると、その出力は、
19, 58, 76, 81
となる。

8 :デフォルトの名無しさん:05/01/02 23:34:05
>>1
単発スレ立てるな。
そういう質問は下のどちらかでしろ。
http://pc5.2ch.net/test/read.cgi/tech/1104114259/
http://pc5.2ch.net/test/read.cgi/tech/1104114259/

9 :デフォルトの名無しさん:05/01/02 23:39:54
>>1
インターネットで調べればいくらでもでてくるだろ

10 :デフォルトの名無しさん:05/01/03 01:07:05
>>1
この辺の勉強はネットより本の方が良いような悪いような

11 :デフォルトの名無しさん:05/01/03 01:38:51
>>1
http://www1.cts.ne.jp/~clab/Contents/Sortindex.html

12 :デフォルトの名無しさん:05/01/03 03:19:16

= = = = = = = = = = = = 終 了 = = = = = = = = = = = = =

13 :デフォルトの名無しさん:05/01/03 05:18:54
>>1
いいことを教えてやろう。
「バルブ」ソートで検索してみな

14 :デフォルトの名無しさん:05/01/03 08:05:09
>>1
2chでお前の宿題をやらせようとしてんじゃねーよwwwwww

15 :デフォルトの名無しさん:05/01/03 09:01:31
>>1
バブルソートて実装はものすごく簡単なのに

16 :デフォルトの名無しさん:05/01/03 11:15:04
>>1
松原...?

17 :デフォルトの名無しさん:05/01/03 18:44:21
>>1
bubblesort(&number,n)でいいんじゃね?

18 :デフォルトの名無しさん:05/01/03 21:00:54
>>1
いいことを教えてやろう。
「バイブ ソープ」で検索してみな

19 :デフォルトの名無しさん:05/01/04 01:37:26
#include <stdio.h>

int main(int argc, char **argv){
 int numbers[] = { 82, 47, 2, 29, 95, 15, 38, 66, 51, 72 };
 int n = sizeof(numbers) / sizeof(int);
 int i, j, swap;
 for(i = 1; i < n; i++){
  for(j = 1; j < i; j++){
   if(numbers[j] < numbers[j-1]){
    swap = numbers[j-1];
    numbers[j-1] = numbers[j];
    numbers[j] = swap;
   }
  }
 }
 for(i = 0; i < n; i++){
  printf("%d\n", numbers[i]);
 }
 return 0;
}


20 :デフォルトの名無しさん:05/01/08 20:27:32
まじめだなあ

21 :デフォルトの名無しさん:05/01/08 22:21:30
>1
問題文中には、特にバブルソートでという指定は無いようだけど、
クイックソートじゃダメ?

22 :デフォルトの名無しさん:05/01/09 17:52:03
age

23 :デフォルトの名無しさん:05/01/10 15:29:28
評価の指標
0:未提出
1:よくわからんけど動いてる
2:バブルソート(車輪の再発明)
3:バブルソート(過去レポ○写し), その他のソート方法
4:クイックソート(計算量に対する処置なし)
5:クイックソート(採点者のお気に入り)


24 :デフォルトの名無しさん:05/01/10 20:08:42
クイックソートは、再帰処理に関する練習問題としてはよく出てくるよね。
あと、ハノイの塔とかも。

25 :デフォルトの名無しさん:05/01/10 20:29:01
>24
むしろフィボなっち

26 :デフォルトの名無しさん:05/01/11 01:59:22
>>19
それバブルソートじゃないし

27 :デフォルトの名無しさん:05/01/11 15:37:52
バブルスターっつったらアレでしょうが

28 :デフォルトの名無しさん:05/01/12 20:34:06
>>26
じゃあなに

29 :デフォルトの名無しさん:05/01/13 15:10:34
さしすせそると

30 :デフォルトの名無しさん:05/01/14 00:12:41
>>24
ハノイの塔を手続き部分無しで書いてください。

31 :デフォルトの名無しさん:05/01/14 20:29:00
 
. |---|
|-----|        |-|

32 :デフォルトの名無しさん:05/01/14 23:21:40
>>31
BlowJob!

33 :デフォルトの名無しさん:05/01/15 00:24:42
とりあえずだな、

sort()

だけ書いて、後は「2ちゃんねるで誰も教えてくれなかったんです」と言い訳文を書いとけ。

34 :デフォルトの名無しさん:05/01/15 00:27:31
>>1
>スリーサイズは上から60,58,64
まで読んだ

>>19はなんだっけ。
そして下は何だっけ。
int main()
{
  int numbers[10] = { 82, 47, 2, 29, 95, 15, 38, 66, 51, 72 };
  int n = 10;
  int i, j,tmp;
  for(i=0;i<n;i++)
    for(j=0;j<i;j++)
      if(numbers[i]<numbers[j]){
        tmp = numbers[i];
        numbers[i] = numbers[j];
        numbers[j] = tmp;
      }

  for(i=0;i<n;i++)
    printf("%d ",numbers[i]);
  printf("\n");
  return 0;
}

35 :デフォルトの名無しさん:05/01/15 12:26:27
微妙に良スレになってきた予感

36 :デフォルトの名無しさん:05/01/15 12:32:30
ここらへんでほえほげ

37 :デフォルトの名無しさん:05/01/15 13:17:42
#include<stdio.h>
#include<string.h>
int main(){
  int number[10] = { 82, 47, 2, 29, 95, 15, 38, 66, 51, 72 };
  int n = 10;
  int i;
  char *filename=tmpnam(NULL);
  char pstr[L_tmpnam+24]="sort ";
  FILE *fp=fopen(filename,"w");
  FILE *pp;
  char buffer[256];
  strcat(pstr,filename);
  for(i=0;i<n;i++){
    fprintf(fp,"%010d\n",number[i]);
  }
  fclose(fp);
  pp=popen(pstr,"r");
  while(fgets(buffer,sizeof(buffer),pp)){
    int a;
    sscanf(buffer,"%d",&a);
    printf("%d ",a);
  }
  printf("\n");
  return 0;
}
環境によってはpopenが_popenかも

38 :デフォルトの名無しさん:05/01/15 13:58:00
>>37
sortが標準出力してくれるんだから、popen("sort", "w");でいい。

39 :デフォルトの名無しさん:05/01/15 15:36:25
>>38
それだと>>1みたいな出力に出来ないから
って , を忘れてる orz

あーUNIX系のsortだと-gってのがあるのか
これだと%010dとか不恰好なことしなくてすむなー

40 :デフォルトの名無しさん:05/01/15 18:04:20
>>39
それじゃ、popen("sort -g|awk '{printf(\"%s, \", $0);}'", "w");とかw

41 :デフォルトの名無しさん:05/01/15 19:15:07
バブルソート
選択ソート
挿入ソート
シェルソート
クイックソート
マージソート
あと>>35は何?自己流?

42 :41:05/01/15 19:15:40
>>34の間違いであります!

43 :デフォルトの名無しさん:05/01/15 20:13:41
選択ソートっぽいけど

44 :デフォルトの名無しさん:05/01/15 20:14:36
間違えた
ただのバブルソートじゃねーか

45 :デフォルトの名無しさん:05/01/15 22:30:02
一瞬良スレかと思ったが、なかなか低レベルなスレだな。

46 :デフォルトの名無しさん:05/01/15 22:35:29
バイブソープ

47 :デフォルトの名無しさん:05/01/15 23:34:20
>>45
バブルソートではどうやっても高レベルにはならんだろ

48 :デフォルトの名無しさん:05/01/16 01:58:16
バブル時代とそーっと邂逅して懐古するスレということにしてみてはどうか

49 :デフォルトの名無しさん:05/01/16 01:59:38
Cに限らずいろんな言語でバブろうぜ!!!

50 :デフォルトの名無しさん:05/01/17 23:29:40
for (i = 0; i < n - 1; i++) {
for (j = n - 1; j > i; j--) {
if (x[j - 1] > x[j]) { /* 前の要素の方が大きかったら */
temp = x[j]; /* 交換する */
x[j] = x[j - 1];
x[j - 1]= temp;
}
}
}


51 :デフォルトの名無しさん:05/01/18 01:36:33



・・・で?

52 :デフォルトの名無しさん:05/01/18 12:08:47
  ∧_∧
 ( ´∀`)
 (    )
 82, 47, 2, 29, 95, 15, 38, 66, 51, 72

  ∧_∧
 ( ´∀`)
 ( つ82)
   47, 2, 29, 95, 15, 38, 66, 51, 72

    ∧_∧
   ( ´∀`)
   ( つ82つ95
   47, 2, 29,   15, 38, 66, 51, 72

                   ∧_∧
                  ( ´∀`) /
                  ( つ  つ
   47, 2, 29,   15, 38, 66, 51, 72, 82, 95 ─
                     /' ヽ\

                 ギュッ   ∧_∧
                     (´∀` ) ≡≡
47, 2, 29, 15, 38, 66, 51, 72, 82, 95⊂   )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

53 :デフォルトの名無しさん:05/01/18 13:11:19
その ギュッ   がコンピュータでは高コストなわけだよ

54 :デフォルトの名無しさん:05/01/19 02:53:15
データ構造によるがな

55 :デフォルトの名無しさん:05/01/19 09:56:22
双方向連結リスト

56 :名無しのゴンベイ:05/01/21 10:13:45
バブルソートを使ったプログラムをお願いします。

57 :デフォルトの名無しさん:05/01/23 00:57:52
>>5
正月早々惚れた!

58 :デフォルトの名無しさん:05/01/23 02:11:42
おそっwwwwwwwwwwwwwwwwwwwwwwwwwwww

59 :デフォルトの名無しさん:05/01/30 00:47:22
バブル期入社の人のためによく使われる手法です。

60 :デフォルトの名無しさん:05/01/30 20:50:30
>>59
バブル期入社組が一番上にくるんだよな。

(ここだけの話だけど、リストラの優先順位らしいぜ)

61 :デフォルトの名無しさん:05/01/31 03:16:36
終了条件って収束するまで?

62 :デフォルトの名無しさん:05/01/31 03:20:10
>>61
前のループで一度も交換がなかったらでは?

63 :デフォルトの名無しさん:05/01/31 03:49:32
それ収束って言うよね?

64 :62:05/01/31 04:02:12
ああ、そうか。すまん。

65 :C#:05/01/31 11:48:39
C# こんな感じ?
public class Sorter {
private int[] data;
//ry
public void BubbleSort() {
for (int i=0; i<data.Length; i++) {
for (int j=1; j<data.Length; j++) {
if ( data[j-1] > data[j] ){
Swap(ref data[j], ref data[j-1]);
}
}
}
}
// ry
private void Swap(ref int a, ref int b){
int tmp = a;
a = b;
b = tmp;
}

// ry

66 :デフォルトの名無しさん:05/02/01 09:43:00

 ○

 o



67 :デフォルトの名無しさん:05/02/01 20:19:38 ID:??? ?
>>1
某大学で同じ宿題が出たぞ

68 :デフォルトの名無しさん:05/02/01 20:28:13
>>67
なんでID付いてんの?


69 :デフォルトの名無しさん:05/02/01 20:43:49
>>68
beカテゴリーの板にログインしてんじゃないのかな

面白ネタnews板
http://be.2ch.net/be/

70 :デフォルトの名無しさん:05/02/01 20:46:37
>>69
その板文字コードおかしいーーーって、マジで。
ありえねーッ

71 :デフォルトの名無しさん:05/02/03 15:32:26
つ[numbers = numbers[0..n].sort;]

72 :デフォルトの名無しさん:05/02/13 17:40:56
配列の動きをレポートしてくる宿題でわからないところがあったので教えてください。

マージソートでデータ(乱数1〜10)を10用意してソートしたときの配列の動き方がわかりません。
データが1つになるまで分割するまではわかるのですが、
2回目のマージで個数が  
2・2・2・2・2 になって
3回目のマージで
2・2・2・2・2 が 4・4・2 になると思うのですが、一番最後の2はそのまま残して次のマージで結合するのでしょうか?

いろいろなサイトを見て回ったのですが要素が8個のとこばかりでよくわかりませんでした。
マージの板がなかったのでここで質問してしまいました、よろしくお願いします。

73 :デフォルトの名無しさん:05/02/13 19:10:21
中学生の技術科の問題?

74 :デフォルトの名無しさん:05/02/13 19:10:24
C言語なら俺に聞け!Part 102
http://pc5.2ch.net/test/read.cgi/tech/1108056236/

このスレで聞いたほうが早いと思う

75 :デフォルトの名無しさん:05/02/14 07:35:21
各回のマージで塊が偶数個になるように0を追加する。
2・2・2・2・2(・0)
4・4・2(・0)
8・2
10
遡って始めから6個の0を追加して16個にして考えてもよい。

76 :デフォルトの名無しさん:05/02/17 13:29:14
丁寧にやらなきゃダメだよ
ソーっとね。 ソートだけに。

プゲラ

77 :デフォルトの名無しさん:05/02/17 18:08:04
昔、バブルソートの変形で、Qソートより速いってのを見た覚えがあるんだけど、
誰か知らない?

78 :(´・ω・`)知らんがな:05/02/17 18:45:45
>>77
(´・ω・`)知らんがな
昔、挿入ソートの変形で、要素数が少なければ結構速いShellソートってのを見た覚えがあるけんど、誰か知らんか?

79 :デフォルトの名無しさん:05/02/17 21:03:37
>>77
コムソート

80 :(´・ω・`)知らんがな:05/02/17 21:27:20
>>79
ほぼO(n・log n)だがクイックソートより遅くヒープソートと同じくらい。
データの並びによってはひどく遅くなることがある。

81 :デフォルトの名無しさん:05/02/18 16:47:13
バケツソート


82 :79:05/02/18 18:34:36
あ、qソートより速いって事は無かったはず
昔とあるBBSでえらい速いバブルソートとして紹介されてた様な

83 :デフォルトの名無しさん:05/02/18 22:47:25
>>77
日経バイトに載っていたやつかな?

クイックソートは名前ほど速くない。

84 :デフォルトの名無しさん:05/02/18 23:03:18
ジェフスコットソート

85 :デフォルトの名無しさん:05/02/18 23:44:53
標準関数のqsortの中身はクイックソートかマージソートで決まりでしょう?
配列の汎用ソートはもういいや。
単方向リストのソートで配列に移し替えない早いやつを希望…ってスレ違いか…残念無念

86 :デフォルトの名無しさん:05/02/18 23:52:50
クイックソートはアルゴリズム書くなんて面倒なことしなくても実装されてるんで使うのに必要な手間がクイック

87 :デフォルトの名無しさん:05/02/19 00:00:00
>>86
でもC言語の規格上はqsortはクイックソートでなくてもOKなはず。
中身はどうであれ、十分速ければ無問題。

88 :デフォルトの名無しさん:05/02/24 11:24:55
>>85
リストは quick sort が楽だよ。
閾値の上、下、等しいの3つに破壊的に(tail / next/ cdr 部分書き換えの)イモ刺しで分割して、
これまた破壊的に接続する。
consセルも消費しないし、stableで使いやすい。非破壊にするなら最初にコピーしとく。

89 :85:05/02/24 12:24:06
>>88
ありがとう。
昨日、最悪の場合でもO(n・log n)でないといけなくなって、自然マージソートで作ってしまいました。
付け替えが多くやや遅いようです。

リスト版 quick sort の閾値の選び方も配列版と同じくらい種類がありそうですね。
平均的にはリスト版 quick sortの方が速そう。

90 :デフォルトの名無しさん:05/02/28 02:50:54
int i = 1;
while( i < n )
{
if( data[i-1] <= data[i] || i == 0 ) i++;
else
{
int temp = data[i];
data[i] = data[i-1];
data[i-1] = temp;
i--;
}
}
妖精ソートとか使って意表をついてみようぜ。
バブルソート並みの速度だが

18 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)