排序前:
70 80 31 37 10 1 48 60 33 80
1.
[1] 80 31 37 10 70 48 60 33 80
选出最小值
1
2.
[1 10] 31 37 80 70 48 60 33 80
选出最小值
10
3.
[1 10 31] 37 80 70 48 60 33 80
选出最小值
31
4.
[1 10 31 33] 80 70 48 60 37 80 ......
5.
[1 10 31 33 37] 70 48 60 80 80 ......
6.
[1 10 31 33 37 48] 70 60 80 80 ......
7.
[1 10 31 33 37 48 60] 70 80 80 ......
8.
[1 10 31 33 37 48 60 70] 80 80 ......
9.
[1 10 31 33 37 48 60 70 80] 80 ......
[代码]
/** */
/**
* 选择排序
*
@param
data:等待排序整型数组
*
* data = {70, 81, 31, 37, 10, 1, 48, 60, 33, 80}
* 排序结果:
* 第 1 次排序:81 70 31 37 10 1 48 60 33 80
* 第 2 次排序:81 80 31 37 10 1 48 60 33 70
* 第 3 次排序:81 80 70 37 10 1 48 60 33 31
* 第 4 次排序:81 80 70 60 10 1 48 37 33 31
* 第 5 次排序:81 80 70 60 48 1 10 37 33 31
* 第 6 次排序:81 80 70 60 48 37 10 1 33 31
* 第 7 次排序:81 80 70 60 48 37 33 1 10 31
* 第 8 次排序:81 80 70 60 48 37 33 31 10 1
* 第 9 次排序:81 80 70 60 48 37 33 31 10 1
*/
public
void
selectSort(
int
[] data)
{
int
max
=
data.length;
int
m, temp;
for
(
int
i
=
0
; i
<
max
-
1
; i
++
)
{
m
=
i;
for
(
int
j
=
i
+
1
; j
<=
max
-
1
; j
++
)
{
if
(data[j]
>
data[m])
{
m
=
j;
}
}
if
(m
!=
i)
{
temp
=
data[i];
data[i]
=
data[m];
data[m]
=
temp;
}
System.out.print(
"
第
"
+
(i
+
1
)
+
"
次排序:
"
);
for
(
int
k
=
0
; k
<=
max
-
1
; k
++
)
{
System.out.print(data[k]
+
"
"
);
}
System.out.println();
}
}