二維陣列中元素排序——徹底排序
阿新 • • 發佈:2019-02-16
/* (程式頭部註釋開始) </p><p>* 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * 作 者: 李兆慶 * 完成日期: 2012 年 9 月 18 日 * 輸入描述: * 問題描述及輸出: 編寫一個Java應用程式,自己考慮到既然要排序和排徹底點啊點啊,所以就得這樣排出後陣列中的元素更加有層次感。歡迎也希望大家給出寶貴的建議! * 實現功能:將二維陣列中元素由大到小依次排序並輸出 1 4 5 6 7 2 10 11 9 8 12 3, 對調後結果: 12 11 10 9 8 7 6 5 4 3 2 1 * 程式頭部的註釋結束 */ public class Num{ /** * @param args */ public static void main(String[] args) { int[][] a = { { 1, 4, 5, 6 }, { 7, 2, 10, 11 }, { 8, 9, 12, 3 } }; System.out.println("對調前輸出陣列為:"); printMatrix(a); //按二維方式輸出陣列 printNewMatrix(a); //對調後輸出陣列 System.out.println("對調後輸出陣列為:"); printMatrix(a); //按二維方式輸出陣列 } //按二維方式輸出陣列 static void printMatrix(int[][] a){ for (int i = 0; i < a.length; i++){ for (int j = 0; j < a[i].length; j++){ System.out.print(a[i][j]+" "); } System.out.println(); } } //對調後輸出陣列 static void printNewMatrix(int[][] a){ int [] c = new int [a.length * a[0].length]; int m = 0; for (int i = 0; i < a.length; i++){ for (int j =0; j < a[i].length; j++){ c[m] = a[i][j]; m++; } } int n = 0; for (int i = 0; i < c.length; i++){ for (int j = 0 ; j<c.length - i - 1; j++){ if (c[j]<c[j+1]){ n = c[j]; c[j] = c[j+1]; c[j+1] = n; } } } System.out.println("陣列中所有元素有大到小排序為: "); for (int i = 0; i < c.length; i++){ System.out.print(c[i]+" "); } System.out.println(); int r = 0; for (int i = 0; i < a.length; i++){ for (int j =0; j < a[i].length ; j++){ a[i][j] = c[r]; r++; } } } }