目次

トップ10を求める方法のいろいろ

トップ10を記録する部分

Saidai11.java を元に作ります。最大のものが1個でなく10個記録しておかなければなりません。記憶の方法と、上位10データをいかに選別するかでいろいろな方法があります。

プログラム名 Saidai13.java

最初のアイディア

            // int[] max = new int[10]; などと作り、
            // for を使って初期値を0にしておく
            while ((line = inb.readLine()) != null) {
                ct++;
                data = Integer.parseInt(line);
                for( int i=0; i<max.length; i++ ) {
                    if( data > max[i] ){
                        for( int j=max.length-1 ; j>i ; j-- ) {
                            max[j] = max[j-1];
                        }
                        max[i] = data;
                        break;  //forの残りの部分はとばす
                    }
                }
            }
 

2つ目のアイディア

            // int[] max = new int[11]; などと作り(一つ多い!!)、
            int maxmax=10
            // for を使って初期値を0にしておく
            while ((line = inb.readLine()) != null) {
                ct++;
                data = Integer.parseInt(line);
                for( int i=maxmax-1 ; i >= 0 ; i-- ) {
                    if( data >= max[i] ){
                        max[i+1] = max[i];
                    }
                    else {
                        max[i+1] = data;
                        break;
                    }
                }
                if (data > max[0]) {
                    max[0] = data;
                }
            }

3つめ

            int maxmax=10
            // int[] max = new int[maxmax+1]; などと作り(一つ多い!!)、
            // for を使って初期値を0にしておく
            while ((line = inb.readLine()) != null) {
                ct++;
                data = Integer.parseInt(line);
                i= maxmax-1;
                while ( i >= 0 && data >= max[i]  ) {
                    max[i+1] = max[i];
                    i--;
                }
                max[i+1] = data;
            }

4つめ

            // int[] max = new int[11]; の代わりに、
            //  ArrayList<Integer> max = new ArrayList<Integer>();
            // これは説明が必要だが、わかってしまえば易しい。
            while ((line = inb.readLine()) != null) {
                ct++;
                data = Integer.parseInt(line);
                i= 0;
                while ( i < max.size() && data <= max.get(i)  ) {
                    i++;
                }
                max.add(i, data);
            }
もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified