java排序算法之二插入排序
2014-04-04 17:39
155 查看
首先还是介绍插入排序的原理:确定一个检索范围把最小的值放到数组第一个位接着把范围逐步扩大,把大的元素放到小元素后面。和冒泡排序比较起来就是在一定范围内速度比冒泡排序稍快,排序好的元素固定在一个范围,比较后直接整体移动。
代码解析:
int arr[]={49,38,65,97,76,13,27};
int temp = 0;
for(int i = 1; i < arr.length; i++){
temp = arr[i];
int j = i - 1;
for(; j >= 0 && temp > arr[j]; j--){
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
System.out.println("第" + i + "次排序:" + Arrays.toString(arr));
}
打印分析:
第0次排序:[13, 38, 65, 97, 76, 49, 27]
第1次排序:[13, 27, 65, 97, 76, 49, 38]
第2次排序:[13, 27, 38, 97, 76, 49, 65]
第3次排序:[13, 27, 38, 49, 76, 97, 65]
第4次排序:[13, 27, 38, 49, 65, 97, 76]
第5次排序:[13, 27, 38, 49, 65, 76, 97]
第6次排序:[13, 27, 38, 49, 65, 76, 97]
外层循环从第2个元素开始也就是从下标1开始固定,把最小的元素插入到第一的位置接着把第二小的查入到第二的位置一直到元素末尾。当然实现方式有很多种。
代码解析:
int arr[]={49,38,65,97,76,13,27};
int temp = 0;
for(int i = 1; i < arr.length; i++){
temp = arr[i];
int j = i - 1;
for(; j >= 0 && temp > arr[j]; j--){
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
System.out.println("第" + i + "次排序:" + Arrays.toString(arr));
}
打印分析:
第0次排序:[13, 38, 65, 97, 76, 49, 27]
第1次排序:[13, 27, 65, 97, 76, 49, 38]
第2次排序:[13, 27, 38, 97, 76, 49, 65]
第3次排序:[13, 27, 38, 49, 76, 97, 65]
第4次排序:[13, 27, 38, 49, 65, 97, 76]
第5次排序:[13, 27, 38, 49, 65, 76, 97]
第6次排序:[13, 27, 38, 49, 65, 76, 97]
外层循环从第2个元素开始也就是从下标1开始固定,把最小的元素插入到第一的位置接着把第二小的查入到第二的位置一直到元素末尾。当然实现方式有很多种。
相关文章推荐
- 用JAVA实现排序算法之二:直接插入排序
- 白话经典算法系列之二 直接插入排序的三种实现
- java实现 排序算法之直接插入排序
- 白话经典算法系列之二 直接插入排序的三种实现
- 算法系列(三)插入排序的两种改进:规避边界检测和取消交换(Java实现)
- 白话经典算法系列之二 直接插入排序的三种实现
- 白话经典算法系列之二 直接插入排序的三种实现
- 常用算法Java实现之直接插入排序
- 【白话经典算法系列之二】 直接插入排序的三种实现
- 白话经典算法系列之二 直接插入排序的三种实现
- Java常见排序算法之直接插入排序
- Java与算法之(9) - 直接插入排序
- 白话经典算法系列之二 直接插入排序的三种实现
- Java 常用算法 插入,冒泡,快速排序大放送
- java实现排序算法之2-路插入排序,直接插入排序,折半插入排序
- 白话经典算法系列之二 直接插入排序的三种实现
- 白话经典算法系列之二 直接插入排序的三种实现
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- java数据结构与算法之插入算法实现数值排序示例
- 算法积累_java_插入,选择,冒泡,快速排序