ここから本文です

Javaのプログラムについての質問です。12ヵ月の温度配列の中身をソート(大きい順...

pla********さん

2011/6/2721:28:55

Javaのプログラムについての質問です。12ヵ月の温度配列の中身をソート(大きい順)して、表示するというプログラムなんですが、全くわかりません。

ここにヒントみたいなのがあるのですが、ここを見ても分かりません。
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algori...

分かる人がいたら教えてください。

補足わざわざありがとうございました。
しかし、貼り付けてみるとjavaで宣言しなければならないとあるのですが、どうしたらいいのでしょうか?
無知ですいません。教えてください。よろしくお願いします。

閲覧数:
258
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ii3********さん

編集あり2011/6/2722:42:54

Javaの場合、ソートはAPIを使うのが普通です。
以下にサンプルコードを書きます。

/** Sampleクラス(メインクラス) **/
import java.util.Arrays;

public class Sample {
public static void main(String[] args) {
// 月毎のデータを生成
MonthlyData datas[] = {
new MonthlyData(1, 10),
new MonthlyData(2, 8),
new MonthlyData(3, 14),
new MonthlyData(4, 17),
new MonthlyData(5, 20),
new MonthlyData(6, 25),
new MonthlyData(7, 30),
new MonthlyData(8, 35),
new MonthlyData(9, 23),
new MonthlyData(10, 19),
new MonthlyData(11, 12),
new MonthlyData(12, 11)
};

// ソート前のデータを出力
System.out.println("--ソート前--");
printData(datas);

// ソート
Arrays.sort(datas, new MonthlyDataComparator(false));
System.out.println();

// ソート後のデータを出力
System.out.println("--ソート後--");
printData(datas);
}

/**
* 月毎のデータを出力。
* @param datas 月毎のデータ
*/
private static void printData(MonthlyData datas[]) {
for (MonthlyData data : datas) {
System.out.println(data.toString());
}
}
}


/** MonthlyDataクラス **/
/**
* 月間データクラス
*/
public class MonthlyData {
/** 月 */
private int month;
/** 温度 */
private int temp;

/**
* コンストラクタ
* @param month 月
* @param temp 温度
*/
public MonthlyData(int month, int temp) {
this.month = month;
this.temp = temp;
}

public final int getMonth() {
return month;
}

public final int getTemp() {
return temp;
}

public String toString() {
return month + "月:" + temp + "度";
}
}


/** MonthlyDataComparatorクラス **/
import java.util.Comparator;

/**
* 月間データクラス用の比較クラス
*/
public class MonthlyDataComparator implements Comparator<MonthlyData> {
/* 昇順・降順フラグ(昇順の場合はtrue、降順の場合はfalse) */
private boolean asc = true;

/**
* コンストラクタ
* @param asc 昇順・降順フラグ(昇順の場合はtrue、降順の場合はfalse)
*/
public MonthlyDataComparator(boolean asc) {
this.asc = asc;
}

/**
* 比較メソッド
* @param o1 比較対象の最初のオブジェクト
* @param o2 比較対象の 2 番目のオブジェクト
* @return 比較結果
*/
public int compare(MonthlyData o1, MonthlyData o2) {
return asc ? o1.getTemp() - o2.getTemp() : o2.getTemp() - o1.getTemp();
}

public final void setAsc(boolean asc) {
this.asc = asc;
}

public final boolean isAsc() {
return asc;
}
}


補足
文字数の関係上、補足に回答できません。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる