插入排序算法
一、基本思想
将一个数据插入到一个有序的数据中,从而产生一个新的、个数加一的有序数据。
二、时间复杂度
插入排序算法的时间复杂度是O(n^2)
三、排序过程如下
例如{32,21,12,34,9,18,11}
第一次排序:[32],21,12,34,9,18,11,35
第二次排序:[21,32],12,34,9,18,11,35
第三次排序:[12,21,32],34,9,18,11,35
第四次排序:[12,21,32,34],9,18,11,35
第五次排序:[9,12,21,32,34],18,11,35
第六次排序:[9,12,18,21,32,34],11,35
第七次排序:[9,11,12,18,21,32,34],35
第八次排序:[9,11,12,18,21,32,34,35]
四、代码实现
int[] arr = {3,2,1,34,9,18,11,35};
for(int i=1;i<arr.length;i++){
int temp = arr[i];//temp代表所要插入已经排序好的有序数组的元素
//对已经排序好的有序数组进行遍历
for(int j=i-1;j>=0;j--){
if(arr[j]>temp){
arr[j+1] = arr[j];
if(j==0){
arr[j] = temp;
}
}else{
arr[j+1] = temp;
break;
}
}
}
System.out.println(Arrays.toString(arr));