C言語 バブルソート
■ このスレッドは過去ログ倉庫に格納されています
0001あおい☆彡
NGNGただし、数値は配列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<)
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGわろた
0004デフォルトの名無しさん
NGNGぁぉぃちゃんの年齢、スリーサイズ教えてくれたら
やさしいおにいちゃんが答えてくれるかもよ。
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG19, 58, 76, 81
となる。
0008デフォルトの名無しさん
NGNG単発スレ立てるな。
そういう質問は下のどちらかでしろ。
http://pc5.2ch.net/test/read.cgi/tech/1104114259/
http://pc5.2ch.net/test/read.cgi/tech/1104114259/
0009デフォルトの名無しさん
NGNGインターネットで調べればいくらでもでてくるだろ
0010デフォルトの名無しさん
NGNGこの辺の勉強はネットより本の方が良いような悪いような
0011デフォルトの名無しさん
NGNGhttp://www1.cts.ne.jp/~clab/Contents/Sortindex.html
0012デフォルトの名無しさん
NGNG= = = = = = = = = = = = 終 了 = = = = = = = = = = = = =
0013デフォルトの名無しさん
NGNGいいことを教えてやろう。
「バルブ」ソートで検索してみな
0014デフォルトの名無しさん
NGNG2chでお前の宿題をやらせようとしてんじゃねーよwwwwww
0015デフォルトの名無しさん
NGNGバブルソートて実装はものすごく簡単なのに
0016デフォルトの名無しさん
NGNG松原...?
0017デフォルトの名無しさん
NGNGbubblesort(&number,n)でいいんじゃね?
0018デフォルトの名無しさん
NGNGいいことを教えてやろう。
「バイブ ソープ」で検索してみな
0019デフォルトの名無しさん
NGNGint 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;
}
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG問題文中には、特にバブルソートでという指定は無いようだけど、
クイックソートじゃダメ?
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0:未提出
1:よくわからんけど動いてる
2:バブルソート(車輪の再発明)
3:バブルソート(過去レポ○写し), その他のソート方法
4:クイックソート(計算量に対する処置なし)
5:クイックソート(採点者のお気に入り)
0024デフォルトの名無しさん
NGNGあと、ハノイの塔とかも。
0025デフォルトの名無しさん
NGNGむしろフィボなっち
0026デフォルトの名無しさん
NGNGそれバブルソートじゃないし
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGじゃあなに
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGハノイの塔を手続き部分無しで書いてください。
0031デフォルトの名無しさん
NGNG. |---|
|-----| |-|
0032デフォルトの名無しさん
NGNGBlowJob!
0033デフォルトの名無しさん
NGNGsort()
だけ書いて、後は「2ちゃんねるで誰も教えてくれなかったんです」と言い訳文を書いとけ。
0034デフォルトの名無しさん
NGNG>スリーサイズは上から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;
}
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG#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かも
0038デフォルトの名無しさん
NGNGsortが標準出力してくれるんだから、popen("sort", "w");でいい。
0039デフォルトの名無しさん
NGNGそれだと>>1みたいな出力に出来ないから
って , を忘れてる orz
あーUNIX系のsortだと-gってのがあるのか
これだと%010dとか不恰好なことしなくてすむなー
0040デフォルトの名無しさん
NGNGそれじゃ、popen("sort -g|awk '{printf(\"%s, \", $0);}'", "w");とかw
0041デフォルトの名無しさん
NGNG選択ソート
挿入ソート
シェルソート
クイックソート
マージソート
あと>>35は何?自己流?
004241
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGただのバブルソートじゃねーか
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGバブルソートではどうやっても高レベルにはならんだろ
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
05/01/17 23:29:40for (j = n - 1; j > i; j--) {
if (x[j - 1] > x[j]) { /* 前の要素の方が大きかったら */
temp = x[j]; /* 交換する */
x[j] = x[j - 1];
x[j - 1]= temp;
}
}
}
0051デフォルトの名無しさん
05/01/18 01:36:33・・・で?
0052デフォルトの名無しさん
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⊂ )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0053デフォルトの名無しさん
05/01/18 13:11:190054デフォルトの名無しさん
05/01/19 02:53:150055デフォルトの名無しさん
05/01/19 09:56:220056名無しのゴンベイ
05/01/21 10:13:450057デフォルトの名無しさん
05/01/23 00:57:52正月早々惚れた!
0058デフォルトの名無しさん
05/01/23 02:11:420059デフォルトの名無しさん
05/01/30 00:47:220060デフォルトの名無しさん
05/01/30 20:50:30バブル期入社組が一番上にくるんだよな。
(ここだけの話だけど、リストラの優先順位らしいぜ)
0061デフォルトの名無しさん
05/01/31 03:16:360062デフォルトの名無しさん
05/01/31 03:20:10前のループで一度も交換がなかったらでは?
0063デフォルトの名無しさん
05/01/31 03:49:32006462
05/01/31 04:02:120065C#
05/01/31 11:48:39public 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
0066デフォルトの名無しさん
05/02/01 09:43:00○
O
o
。
0067デフォルトの名無しさん
NGNG某大学で同じ宿題が出たぞ
0068デフォルトの名無しさん
05/02/01 20:28:13なんでID付いてんの?
0069デフォルトの名無しさん
05/02/01 20:43:49beカテゴリーの板にログインしてんじゃないのかな
面白ネタnews板
http://be.2ch.net/be/
0070デフォルトの名無しさん
05/02/01 20:46:37その板文字コードおかしいーーーって、マジで。
ありえねーッ
0071デフォルトの名無しさん
05/02/03 15:32:260072デフォルトの名無しさん
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個のとこばかりでよくわかりませんでした。
マージの板がなかったのでここで質問してしまいました、よろしくお願いします。
0073デフォルトの名無しさん
05/02/13 19:10:210074デフォルトの名無しさん
05/02/13 19:10:24http://pc5.2ch.net/test/read.cgi/tech/1108056236/
このスレで聞いたほうが早いと思う
0075デフォルトの名無しさん
05/02/14 07:35:212・2・2・2・2(・0)
4・4・2(・0)
8・2
10
遡って始めから6個の0を追加して16個にして考えてもよい。
0076デフォルトの名無しさん
05/02/17 13:29:14ソーっとね。 ソートだけに。
プゲラ
0077デフォルトの名無しさん
05/02/17 18:08:04誰か知らない?
0078(´・ω・`)知らんがな
05/02/17 18:45:45(´・ω・`)知らんがな
昔、挿入ソートの変形で、要素数が少なければ結構速いShellソートってのを見た覚えがあるけんど、誰か知らんか?
0079デフォルトの名無しさん
05/02/17 21:03:37コムソート
0080(´・ω・`)知らんがな
05/02/17 21:27:20ほぼO(n・log n)だがクイックソートより遅くヒープソートと同じくらい。
データの並びによってはひどく遅くなることがある。
0081デフォルトの名無しさん
05/02/18 16:47:13008279
05/02/18 18:34:36昔とあるBBSでえらい速いバブルソートとして紹介されてた様な
0083デフォルトの名無しさん
05/02/18 22:47:25日経バイトに載っていたやつかな?
クイックソートは名前ほど速くない。
0084デフォルトの名無しさん
05/02/18 23:03:180085デフォルトの名無しさん
05/02/18 23:44:53配列の汎用ソートはもういいや。
単方向リストのソートで配列に移し替えない早いやつを希望…ってスレ違いか…残念無念
0086デフォルトの名無しさん
05/02/18 23:52:500087デフォルトの名無しさん
05/02/19 00:00:00でもC言語の規格上はqsortはクイックソートでなくてもOKなはず。
中身はどうであれ、十分速ければ無問題。
0088デフォルトの名無しさん
05/02/24 11:24:55リストは quick sort が楽だよ。
閾値の上、下、等しいの3つに破壊的に(tail / next/ cdr 部分書き換えの)イモ刺しで分割して、
これまた破壊的に接続する。
consセルも消費しないし、stableで使いやすい。非破壊にするなら最初にコピーしとく。
008985
05/02/24 12:24:06ありがとう。
昨日、最悪の場合でもO(n・log n)でないといけなくなって、自然マージソートで作ってしまいました。
付け替えが多くやや遅いようです。
リスト版 quick sort の閾値の選び方も配列版と同じくらい種類がありそうですね。
平均的にはリスト版 quick sortの方が速そう。
0090デフォルトの名無しさん
05/02/28 02:50:54while( 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--;
}
}
妖精ソートとか使って意表をついてみようぜ。
バブルソート並みの速度だが
0091デフォルトの名無しさん
2005/06/05(日) 03:25:05int tmp, i, j;
for( j=1; j < n; j++ ){
i = j - 1;
tmp = data[j];
while( (i>=0) && (tmp<data[i]) ){
data[i+1] = data[i];
i = i - 1;
}
data[i+1] = tmp; // これが無いと失敗する場合の配列を教えて!!
}
}
0092デフォルトの名無しさん
2005/06/05(日) 03:28:45http://www.geocities.co.jp/SiliconValley/4334/unibon/asp/vbscriptsort.html
Sub sortInsertion(ByRef a) ' 挿入ソート
Dim i
For i = 1 To UBound(a)
Dim j
For j = i To 1 Step -1
If a(j).compareTo(a(j - 1)) < 0 Then
Call swap(a(j), a(j - 1))
Else
Exit For
End If
Next
Next
End Sub
0093デフォルトの名無しさん
2005/06/05(日) 03:39:49ここも、最後の
a[j + 1] = x;
って意味あるんですか?
0094デフォルトの名無しさん
2005/06/05(日) 04:14:330095デフォルトの名無しさん
2005/06/05(日) 04:42:19試してから質問してるかぁ?それが無かったらソートにならんだろ。
ヒント:
91>data[i+1] = data[i]; と
92>Call swap(〜
の違いを考えよう。
0096デフォルトの名無しさん
2005/06/12(日) 13:55:45ランダムな値に対しては、qsortが有効だから、この二つのソートでたいていは間に合う。
0097デフォルトの名無しさん
2005/07/15(金) 14:26:15とりあえず最強
■ このスレッドは過去ログ倉庫に格納されています