插入排序 Java实现
直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。 这是百度百科关于直接插入排序的定义。
下面是直接插入排序算法的图解:
1. 先有一个待排序的数组
2.i 记录已经排好序的数组的长度,在 i 之前的数组已经按照从小到大的顺序排列。
在 i 移动的时候。j 的移动范围在数组开始到i所指向的位置。
通过 j 的移动,将 j 指向的元素不断归位,以实现 i 之前的元素的顺序排列。
i 从数组的开始移动到结尾,当 i 等于数组的长度的时候,所有元素就按照从小到大的顺序排列好了。
实现代码:
-
package sort;
-
-
public
class InsertionSort {
-
public static void main(String[] args) {
-
int [] a = {
6,
5,
2,
4,
9,
7,
8,
5,
1,
4};
-
print(a);
-
sort(a);
-
print(a);
-
-
}
-
-
static void sort(int[] array){
-
for(
int i =
1;i<
array.length;i++){
-
//数组的第一个元素被当作已经排好序的一个数,所以i从1开始。
-
for(
int j = i;j>
0;j--){
-
if(
array[j]<
array[j
-1]){
-
swap(
array,j,j
-1);
-
}
-
}
-
}
-
}
-
static void swap(int[] array,int i,int j){
-
int temp =
array[i];
-
array[i] =
array[j];
-
array[j] = temp;
-
-
}
-
static void print(int[] array){
-
for (
int i =
0;i <
array.length; i++ ){
-
System.out.print(
array[i]+
" ");
-
}
-
System.out.println(
"\n");
-
}
-
-
}
运行结果: