package com.company.sort;
public class Insertion {
public static void main(String[] args) {
int[] arr = {13,23,4,512,12};
insertsort2(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void insertsort(int[] a)
{
for (int i = 1; i < a.length; i++) {
for (int j = i; j >0 ; j--) {
if (a[j]<a[j-1]){
int tmp = a[j-1];
a[j-1] = a[j];
a[j] = tmp;
}
}
}
}
static void insertsort1(int[] a)
{
for (int i = 1; i < a.length; i++) {
int cur = i;
int v = a[cur];
while (cur > 0 && (v<a[cur-1])){
a[cur] = a[cur-1];
cur--;
}
a[cur] = v;
}
}
public static void insertsort2(int[] a)
{
for (int i = 1; i < a.length; i++) {
int index = search(i,a);
int v = a[i];
for (int j = i; j > index;j--){
a[j] = a[j-1];
}
a[index] = v ;
}
}
public static int search(int index,int[] arr){
int v = arr[index];
int begin = 0;
int end = index;
while (begin<end){
int mid = (begin+end)/2;
if (v<arr[mid]){
end = mid;
}else {
begin = mid+1;
}
}
return begin;
}
}