/******************************************/
/*★ 隣接交換法で再起ソート 前田 稔 ★*/
/******************************************/
using System;
class Prog
{
public static void Main()
{
int[] t = new int[20];
int n;
string str;
int i;
for (n = 0; n < 20; n++)
{
Console.Write("データを入力(0で終了): ");
str = Console.ReadLine();
t[n] = int.Parse(str);
if (t[n] == 0) break;
}
Sort(t, n);
for(i=0; i<n; i++) Console.Write("{0, 5}", t[i]);
Console.ReadLine();
}
// max() を使って再起でソート
static void Sort(int[] t, int n)
{
if (n>1)
{ Max(t,n);
Sort(t,n-1);
}
}
// t[n] の最大の値を一番後(t[n-1]) に格納する
static void Max(int[] t, int n)
{ int w;
if (n<2) return;
Max(t,n-1);
if (t[n-2]>t[n-1])
{ w= t[n-2];
t[n-2]= t[n-1];
t[n-1]= w;
}
}
}
|