第12講 並び替えの方法その1
第3話 隣項交換繰り返し法解答例
Java
解答コード例

import java.io.*;
class w{
  public static void main(String args[])throws IOException {
    BufferedReader p = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("キーボードからデータ数を入力してください。");
    System.out.print ("データ数=");
    int n,k;
    int[] x=new int[1000000];
    n=Integer.parseInt(p.readLine());
    f(x,n);//データ発生
    g(x,n);//データ表示
    k=h(x,n);//データ並び替え
    System.out.println("並び替え後");
    g(x,n);//データ表示
    System.out.print (k);
    System.out.println("巡目に並び替えに成功しました。");
  }
  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 g(int x[],int n){
    int i,a;
    for(i=0;i<n;i++){
      a=(i+1)%20;
      if(x[i]<10){
        System.out.print (" ");
        System.out.print(x[i]);
        System.out.print (" ");
      }
      else{
        System.out.print(x[i]);
        System.out.print (" ");
      }
      if(i>0 && a==0)System.out.println();
    }
  }
  public static int h(int x[],int n){
    int i,j,a,v,w;
    for(i=0;i<n;i++){
      v=0;
      for(j=0;j<n-1;j++){
        if(x[j]<x[j+1]){
          w=x[j];
          x[j]=x[j+1];
          x[j+1]=w;
          v++;
        }
      }
      if(v==0)break;
    }
    return(i);
  }
}

さらに、
入門
のように時間計測ができるように改良します。
並び替えを始める時刻と終了した時点の時刻が取得できれば、
その差を取って表示すれば並び替えに要した時間が計測できます。
現在の時刻をミリ秒単位で取得するには、
long型の変数を用意して、
long hj=System.currentTimeMillis();
と初期化すればよいのです。終わりの時間取得変数をowとするなら、
long ow=System.currentTimeMillis();
そして、その差を取ればミリ秒単位で計測できます。
では普通の秒単位で表示するにはどうしたらよいでしょうか。
ヒントは、変数の型を変えることと単位換算のための割り算です。
1ミリ秒とは1/1000秒のことです。

尚、難解なプログラムの解説はいずれも次次話で行います。

第2話へ 第4話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部