1.折半插入排序:
- 折半插入排序实际上是对直接插入排序的优化,通过折半查找来找到要插入的位置,再搬移元素,最后插入即可。
- 思路分析:
- 定义low为有序部分的第一个位置,high为有序部分的最后一个位置,通过折半查找的方法,不断更新low和high的位置,直到 low>high,此时high+1即为我们要插入的位置。
- 直接插入排序是在每一次比较时,就进行数据的搬移;而折半插入排序是在找到插入位置后,通过循环一次性将high+1位置的元素到有序部分的最后一个元素j进行搬移,最后插入本次的value值到high+1位置。
- 代码实现如下:
package www.first;
import java.util.Scanner;
public class HalfInsertSort {
public static void halfInsertSort(int[] arr){
if(arr.length<=1||arr==null){
return;
}else{
//i为无序部分的第一个元素位置
for(int i = 1;i<arr.length;i++){
//存储无序元素的值,方便比较
int value = arr[i];
//有序部分的第一个元素位置
int low = 0;
//有序部分的最后一个元素位置
int high = i-1;
while(low<=high){
int mid