/**
* 插入排序:时间复杂度O(n^2),但比冒泡排序,选择排序要好
* 把下标为1的先取出来,当做临时变量,下标为0的元素相当于排好序的
* 然后把下标为1的元素与下标为0的元素比较(升序),如果临时变量比下标为0
* 的元素小,则下标为0的元素向后移动一个下标,临时变量插到下标为0的位置中,
* 在下标为2的作为临时变量。。。以此类推
*/
class ArrayInsert {
public static void insertSort(int arr[]){
int i,j,temp;
for(i=1;i< arr.length;i++){ //从下标为1的取
temp = arr[i]; //当做临时变量
j = i-1; //有序数组的最后一个元素的下标(开始时候是0)
while(j >= 0 && arr[j] > temp){ //临时变量比下标为0的小
arr[j+1] = arr[j]; //开始向后移动
j --; //未排序的长度减1
}
arr[j+1] = temp; //临时数据开始插入到指定位置
}
}
public static void main(String[] args){
int arr[] = {5,6,2,3,4,1,9,5,7,8,22,10};
insertSort(arr);
for(int i = 0; i<arr.length;i++){
System.out.print(arr[i] + " ");
}
}
}
java版数据结构与算法—插入排序
最新推荐文章于 2022-09-15 15:41:32 发布