package
sort.algorithm;
public
class
DirectInsertSort {
public
static
void
main(String[] args) {
// TODO Auto-generated method stub
int
data[] = {
2
,
6
,
10
,
3
,
9
,
80
,
1
,
16
,
27
,
20
};
int
temp, j;
for
(
int
i =
1
; i < data.length; i++) {
temp = data[i];
j = i -
1
;
// 每次比较都是对于已经有序的
while
(j >=
0
&& data[j] > temp) {
data[j +
1
] = data[j];
j--;
}
data[j +
1
] = temp;
}
// 输出排序好的数据
for
(
int
k =
0
; k < data.length; k++) {
System.out.print(data[k] +
" "
);
}
}
}
直接插入排序,一般对于已经有序的队列排序效果好。
基本思想:每趟将一个待排序的关键字按照大小插入到已经排序好的位置上。
算法思路,从后往前先找到要插入的位置,如果小于则就交换,将元素向后移动,将要插入数据插入该位置即可。时间复杂度为O(n2),空间复杂度为O(1)