Add Binary Insertion Sort (#3206)
This commit is contained in:
parent
b36f359076
commit
d82a2006ba
@ -0,0 +1,32 @@
|
||||
package com.thealgorithms.sorts;
|
||||
public class BinaryInsertionSort{
|
||||
|
||||
|
||||
|
||||
// Binary Insertion Sort method
|
||||
public int[] binaryInsertSort(int[] array){
|
||||
|
||||
for(int i = 1; i < array.length; i++){
|
||||
|
||||
int temp=array[i];
|
||||
int low = 0;
|
||||
int high = i - 1;
|
||||
|
||||
while(low <= high){
|
||||
int mid = (low + high) / 2;
|
||||
if(temp < array[mid]){
|
||||
high = mid - 1;
|
||||
}else{
|
||||
low = mid + 1;
|
||||
}
|
||||
}
|
||||
|
||||
for(int j = i; j >= low + 1; j--){
|
||||
array[j] = array[j - 1];
|
||||
}
|
||||
|
||||
array[low] = temp;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.thealgorithms.sorts;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
|
||||
|
||||
class BinaryInsertionSortTest {
|
||||
BinaryInsertionSort BIS= new BinaryInsertionSort();
|
||||
|
||||
@Test
|
||||
// valid test case
|
||||
public void BinaryInsertionSortTestNonDuplicate() {
|
||||
int[] array = {1,0,2,5,3,4,9,8,10,6,7};
|
||||
int [] expResult= {0,1,2,3,4,5,6,7,8,9,10};
|
||||
int[] actResult = BIS.binaryInsertSort(array);
|
||||
assertArrayEquals(expResult,actResult);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void BinaryInsertionSortTestDuplicate() {
|
||||
int[] array = {1,1,1,5,9,8,7,2,6};
|
||||
int [] expResult= {1,1,1,2,5,6,7,8,9};
|
||||
int[] actResult = BIS.binaryInsertSort(array);
|
||||
assertArrayEquals(expResult,actResult);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user