用JAVA编写直接插入排序方法
一、内容:
用直接插入排序方法对数组{1 2 5 6 4 24 52 87 62 51 25 65 45}进行排序,从第一个元素开始依次向已排序列进行插入,原理如下:
二、程序源码:
public static void main(String[] args) {
//初始化数组
int[] arr=new int[] {49, 38, 65, 97, 76, 13, 27, 49, 10, 61};
System.out.print("数组初始顺序:");
//遍历原数组
for(int k=0;k<arr.length;k++) {
System.out.print(arr[k]+" ");
}
System.out.println();
for(int i=0;i<arr.length;i++) { //排序趟数
//此处if-else只是为了输出结果整洁
if(i>=0&&i<9) {
System.out.print("第"+0+(i+1)+"个元素:");
}else {
System.out.print("第"+(i+1)+"个元素:");
}
for(int j=0;j<i;j++) { //遍历要排的第i个元素前,已排好的序列
if(arr[i]<=arr[j]) { //将要排序元素插入到第j的位置
int temp = arr[i];
for(int k=i;k>j;k--) {
arr[k]=arr[k-1]; //依次后移要插入位置后,已排好的序列
}
arr[j]=temp;
break;
}
}
//遍历每个元素插入后的数组排序
for(int k=0;k<arr.length;k++) {
System.out.print(arr[k]+" ");
}
System.out.println();
}
}
三、运行结果:
数组初始顺序:49 38 65 97 76 13 27 49 10 61
第01个元素:49 38 65 97 76 13 27 49 10 61
第02个元素:38 49 65 97 76 13 27 49 10 61
第03个元素:38 49 65 97 76 13 27 49 10 61
第04个元素:38 49 65 97 76 13 27 49 10 61
第05个元素:38 49 65 76 97 13 27 49 10 61
第06个元素:13 38 49 65 76 97 27 49 10 61
第07个元素:13 27 38 49 65 76 97 49 10 61
第08个元素:13 27 38 49 49 65 76 97 10 61
第09个元素:10 13 27 38 49 49 65 76 97 61
第10个元素:10 13 27 38 49 49 61 65 76 97
四、算法分析:
时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:稳定