1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public
class
InsertSort{
public
void
insertSort(
int
[] array){
for
(
int
i=
1
;i<array.length;i++)
//第0位独自作为有序数列,从第1位开始向后遍历
{
if
(array[i]<array[i-
1
])
//0~i-1位为有序,若第i位小于i-1位,继续寻位并插入,否则认为0~i位也是有序的,忽略此次循环,相当于continue
{
int
temp=array[i];
//保存第i位的值
int
k = i -
1
;
for
(
int
j=k;j>=
0
&& temp<array[j];j--)
//从第i-1位向前遍历并移位,直至找到小于第i位值停止
{
array[j+
1
]=array[j];
k--;
}
array[k+
1
]=temp;
//插入第i位的值
}
}
}
public
static
void
printArray(
int
[] array) {
for
(
int
i =
0
; i < array.length; i++) {
System.out.print(array[i]);
if
(i != array.length -
1
) {
System.out.print(
","
);
}
}
}
}
从第二个元素开始,判断第二个元素的值与第一个元素的值是否有序,有则开始第三个数值continue。
没有序,认为前面的数值有序,现在,我们要将其插入到前面的有序数列,开始遍历前面的数值,插入正确的位置(开始第二个for循环)
|
插入排序实现(1)
最新推荐文章于 2017-11-01 16:54:26 发布