第17講 並び替えその2=最大値排除繰り返し法
第6話 最大値排除繰り返し法自己再帰版
解答コード例
import java.io.*;
class nb{
public static void main(String args[])throws IOException{
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
System.out.println("データ数をキーボードから入力してください。");
System.out.print ("データ数=");
int n;
n=Integer.parseInt(a.readLine());
int[] x=new int[100000];
f(x,n); //ランダムデータ発生
System.out.println("ランダムデータ");
h(x,n); //データ表示
System.out.println();
double hj = System.currentTimeMillis();
g(0,x,n); //並び替え
double ow = System.currentTimeMillis();
System.out.println();
System.out.println("データの並び替え");
h(x,n); //データ表示
System.out.println();
System.out.println("並び替えにかかった時間は"+(ow-hj)/1000+"秒です。");
}
public static void f(int x[],int n){
int i;
for(i=0;i<n;i++)x[i]=(int)(Math.random()*100);
}
public static void h(int x[],int n){
int i;
for(i=0;i<n;i++){
if(i>0 && i%20==0)System.out.println();
if(x[i]<10)System.out.print(" "+x[i]+" ");
if(x[i]>=10)System.out.print(x[i]+" ");
}
}
public static void g(int s,int x[],int n){
int i,j,mx,w,ik=0;
mx=0;
for(i=s;i<n;i++){
if(mx<x[i]){
mx=x[i];
ik=i;
}
}
if(ik>s){
w=x[s];
x[s]=x[ik];
x[ik]=w;
}
if(s+1<n-1)g(s+1,x,n);
}
}
実行例
次の課題です。
for(i=s;i<n;i++){
if(mx<x[i]){
mx=x[i];
ik=i;
}
}
も自己再帰で実現しましょう。
第5話へ 第7話へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第2部
初心者のための
VC++による C言語 入門 C++ 入門 基礎から応用まで第3部