标签:void 具体步骤 比较 遍历 乱序 部分 快捷 nbsp ++
插入排序类似于整理扑克牌,基本操作是将一个记录分为有序数列、待插入数列,将待插入数列依次插入到有序数列中对应的位置,最终得到一个有序的数列;
插入排序的时间复杂度为O(n^2),空间复杂度为O(1),是稳定的排序方法,适用于数量较少的排序,相对冒泡排序而言是一种较为快捷方便的排序算法。
具体步骤:
1.默认序列中第0个元素是有序的;
2.从下标为1的元素开始,取当前下标i位置处的元素a[i]保存到一个临时变量waitInsert中;
3.对前半部分有序序列循环遍历,并与waitInsert比较,直到遇到一个比waitInsert小的元素(这里默认从小到大排序),此时的下标为j,那么现在只需要对a[j+i]进行赋值waitInsert即可;
4.将待插入元素的下标i向后推移一个位置;
5.重复2~4步骤,直到乱序序列中的元素全部被插入到有序序列中;
示例代码:
public class Test {
public static void main(String[] args) {
int[] arr = {6, 3, 8, 2, 9, 1};
System.out.println("排序前数组为:");
for(int i : arr) {
System.out.print(i + ", ");
}
System.out.println();
sort(arr);
System.out.println("排序后数组为:");
for(int i : arr) {
System.out.print(i + ", ");
}
}
public static void sort(int[] arr) {
for(int i=1; i<arr.length; i++) {
int j = i;
int waitInsert = arr[i];
while(j > 0 && waitInsert < arr[j - 1]) {
arr[j] = arr[j-1];
j--;
}
arr[j] = waitInsert;
}
}
}
标签:void 具体步骤 比较 遍历 乱序 部分 快捷 nbsp ++
原文地址:https://www.cnblogs.com/yuanfei1110111/p/10203576.html