数字のソート、大==>小 をやりました。
<ソース.c>
#include<stdio.h> int main(){ int n; int i,j,k,rev; printf("How many input number?:"); scanf("%d",&n); int data[n]; for(i=0; i<n; i++){ printf("input number:"); scanf("%d",&k); data[i] = k; } for(i=0; i<n-1; i++){ for(j=i+1; j<n; j++){ if(data[i] < data[j]){ rev = data[i]; data[i] = data[j]; data[j] = rev; } } } printf("sort completion:"); for(i=0; i<n; i++){ printf("%d,",data[i]); } printf("\n"); }<ソース.java>
import java.io.*; ・・・(1 public class sort{ public static void main(String args[]){ int i,j,k,rev; int data[]; System.out.print("How many input number:"); BufferedReader bf = new BufferedReader( ・・・(2 new InputStreamReader(System.in)); try{ int n = Double.valueOf(bf.readLine()).intValue(); data = new int[n]; for(i=0; i<n; i++){ ・・・(3 System.out.print("input number:"); BufferedReader bf2 = new BufferedReader( new InputStreamReader(System.in)); int m = Double.valueOf(bf2.readLine()).intValue(); data[i] = m; } for(i=0; i<n-1; i++){ ・・・(4 for(j=i+1; j<n; j++){ if(data[i] < data[j]){ rev = data[i]; data[i] = data[j]; data[j] = rev; } } } System.out.print("sort completion:"); for(i=0; i<n; i++) System.out.print(" "+data[i]+","); System.out.println(""); } catch(IOException e){ System.out.println("IOE Error"); } } }
<考察>
1)パッケージjava.ioに含まれているすべてのクラス受け取っている。
2)BufferedReader・・・バッファから、データを読み込むためのクラス。
InputStreamReader・・・バイト単位のデータを文字として読み込むクラス。
System.in・・・キーボードからの入力を表す。
BufferedReaderというクラスと、InputStreamReaderというクラスを利用する。ここでは、文字列を入力する処理を行う。引数としてInputStreamReaderクラスからSysten.inを受け取る。InputStreamReaderは、読み込み元をSystem.inと指定している。
3)並び替えるためにどれだけの配列が必要か決める。
4)左から「i」「j」とおいて順に比べて大きい方を左に置く。口頭説明しようとしてワケが分からなくなったので実際に数字でやります。3、4、5、6をソートすると、
3456
4356
5346
6345
6435
6534
6543 となります。
<反省>
ソートをやりました。捻りがないですね。でもこれしか思いつきませんでした・・・。がんばりましたよ?