二維陣列的排序
阿新 • • 發佈:2018-11-09
-
public void dAM1() {
-
int[] a[] = {
-
{
12,
26,
89,
78,
45,
65,
36 },
-
{
2
,
6,
90,
34,
16,
27,
5 },
-
{
13,
3,
4,
29,
33,
37,
17 },
-
{
1,
9,
19,
49,
57
,
22,
11 },
-
{
7,
82,
35,
21,
24,
59,
60 } };
-
for (
int i =
0; i < a.length; i++) {
// 二維陣列的長度
-
for
(
int j =
0; j < a[i].length; j++) {
// 每個一維陣列的長度
-
int n = j +
1;
-
for (
int m = i; m < a.length; m++) {
-
for (; n < a[i].length; n++) {
-
if (a[i][j] < a[m][n]) {
-
int max = a[m][n];
-
a[m][n] = a[i][j];
-
a[i][j] = max;
-
}
-
}
-
n =
0;
// 此處是給n從第二個一維陣列開始取0這個座標
-
}
-
}
-
}
-
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();
-
}
-
}
-
-
// 二維陣列全部排序
-
public void dAM2() {
-
int[][] a = {
-
{
12,
26,
89,
78,
45,
65,
36 },
-
{
2,
6,
90,
34,
16,
27,
5 },
-
{
13,
3,
4,
29,
33,
37,
17 },
-
{
1,
9,
19,
49,
57,
22,
11 },
-
{
7,
82,
35,
21,
24,
59,
60 } };
-
int b[] =
new
int[
35];
// new一個一維陣列,陣列長度與二維陣列a的所有元素個數是一樣的
-
for (
int i =
0; i < a.length; i++) {
// 二維陣列長度
-
for (
int j =
0; j < a[i].length; j++) {
// 一維陣列的長度
-
b[j + i * (a[i].length)] = a[i][j];
// 將倆維陣列賦值給一維陣列,注意座標的計算
-
}
-
}
-
for (
int i =
0; i < b.length; i++) {
// 對一維陣列進行選擇排序
-
for (
int j =
0; j < b.length -
1; j++) {
-
if (b[j] < b[j +
1]) {
-
int t = b[j];
-
b[j] = b[j +
1];
-
b[j +
1] = t;
-
}
-
}
-
}
-
for (
int i =
0; i < a.length; i++) {
// 再將排完序的一維陣列賦值給倆維陣列,注意座標的計算
-
for (
int j =
0; j < a[i].length; j++) {
-
a[i][j] = b[j + i * (a[i].length)];
-
}
-
-
}
-
-
for (
int i =
0; i < a.length; i++) {
-
for (
int j =
0; j < a[i].length; j++) {
-
System.out.print(a[i][j] +
"\t");
-
}
-
System.out.println();
-
}
-
}
-
-
// 二維陣列全部排序
-
public void dAM3() {
-
int[][] b = {
-
{
12,
26,
89,
78,
45,
65,
36 },
-
{
2,
6,
90,
34,
16,
27,
5 },
-
{
13,
3,
4,
29,
33,
37,
17 },
-
{
1,
9,
19,
49,
57,
22,
11 },
-
{
7,
82,
35,
21,
24,
59,
60 } };
-
for (
int w =
0; w < b.length; w++) {
// 二維陣列的長度
-
for (
int t =
0; t < b[w].length; t++) {
// 一維陣列的長度
-
for (
int i =
0; i < b.length; i++) {
// 二維陣列的長度
-
for (
int j =
0; j < b[w].length; j++) {
// 一維陣列的長度
-
if (b[w][t] > b[i][j]) {
// 套在for迴圈裡,倆個一模一樣的陣列進行比較
-
int max =
0;
-
max = b[i][j];
-
b[i][j] = b[w][t];
-
b[w][t] = max;
-
}
-
}
-
}
-
}
-
}
-
for (
int i =
0; i < b.length; i++) {
-
for (
int j =
0; j < b[i].length; j++) {
-
System.out.print(b[i][j] +
" ");
-
}
-
System.out.println();
-
}
-
}
-
-
// 方法四:是對每個單獨的陣列進行由小到大排序
-
public void dAM4() {
// 對單個的一維陣列進行排序
-
int[][] a = {
-
{
12,
26,
89,
78,
45,
65,
36 },
-
{
2,
6,
90,
34,
16,
27,
5 },
-
{
13,
3,
4,
29,
33,
37,
17 },
-
{
1,
9,
19,
49,
57,
22,
11 },
-
{
7,
82,
35,
21,
24,
59,
60 } };
-
for (
int k =
0; k < a.length; k++) {
// 直接呼叫陣列arrays裡的sort()這個方法對裡邊的一維陣列進行排序
-
Arrays.sort(a[k]);
-
}
-
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();
-
}
-
-
}
</div>