- 1 名前:JavaScriptは板違い、Web制作板をご利用ください mailto:sage [2009/01/22(木) 21:36:30 ]
- 【質問者へ】
回答者の便宜のため、以下の注意事項を遵守してください。 ・質問は【課題提示用テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。 ・JavaScriptは板違い、Web制作板をご利用ください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 ・回答されたら動作報告を必ずしてください。 ・課題文が長い時、添付ファイルがある時はこちらのアップローダーを使うと便利です。 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm 【課題提示用テンプレ】 【 課題 】与えられた課題文をそのまま書きます。 《必須》 【 形態 】1. Javaアプリケーション(main()で開始)/2. Applet/3. Servlet/ 4. 携帯(開発環境のver.必須)/5. その他(明記のこと) 《必ず選択》 【 GUI 】1. AWTのみ/2. Swing/3. SWT/4. 制限なし/ 5. その他(明記すること) 《GUIの課題の場合必ず選択》 【 期限 】提出期限、解答希望日を書きます。「できるだけ早く」はNG。 《必須》 【 Ver 】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》 【 用語 】数学用語、専門用語の意味、説明を書きます。 《あれば必須》 【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。 丸投げでない場合は、途中までのソースとその経過報告、 質問点、疑問点を書きます(なるべく丸投げにしてください)。 【回答プログラムの掲載場所】 Java質問スレWiki ttp://www.wikiroom.com/java/ ソースポストネット ttp://sourcepost.sytes.net/ ろだ2 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm 【前スレ】 pc11.2ch.net/test/read.cgi/tech/1221652206/
- 264 名前:デフォルトの名無しさん [2009/03/25(水) 01:54:59 ]
- 【 課題 】
30個のデータが格納されたint型配列をソートするプログラムを作成しなさい。 ただし、ヒープソートを使うこと。 ※補足 データは任意とする。 【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】平成21年3月28日(土) 午前7時まで 【 Ver 】1.6.0_11 お手上げですのでお手数ですがどなたかよろしくお願い致しますm(_ _)m
- 265 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:08:57 ]
- >>264 降順が必要ならsortメソッド中の配列の値の比較をしている不等号を全部逆向きにする。
public class HeapSort { public static void main(String[] args) { int[] data = new int[30]; for (int i = 0; i < data.length; i++) data[i] = (int)(Math.random() * 100) + 1; System.out.println("before: " + java.util.Arrays.toString(data)); sort(data); System.out.println("after : " + java.util.Arrays.toString(data)); } private static void sort(int[] a) { for (int i = 1; i < a.length; i++) { int j = i, b = a[j]; while (j > 0 && a[(j - 1) / 2] < b) { a[j] = a[(j - 1) / 2]; j = (j - 1) / 2; } a[j] = b; } for (int i = a.length; i-- > 0;) { int j = 0, b = a[i]; a[i] = a[0]; while (true) { int k = j * 2 + 1; if (k >= i) break; if (k + 1 < i && a[k] < a[k + 1]) k++; if (a[k] <= b) break; a[j] = a[k]; j = k; } a[j] = b; } } }
|

|