// binary insertion sort
import java.util.Arrays;
class GFG
{
public static void main
(String[] args
) {
final int[] arr = { 37, 23, 0, 17, 12, 72,
31, 46, 100, 88, 54 };
new GFG().sort(arr);
for (int i = 0; i < arr.length; i++)
System.
out.
print(arr
[i
] + " "); }
// Driver Code
public void sort(int array[])
{
for (int i = 1; i < array.length; i++)
{
int x = array[i];
// Find location to insert
// using binary search
i, x) + 1);
// Shifting array to one
// location right
array, j + 1, i - j);
// Placing element at its
// correct location
array[j] = x;
}
}
}
Ly8gYmluYXJ5IGluc2VydGlvbiBzb3J0CgppbXBvcnQgamF2YS51dGlsLkFycmF5czsKY2xhc3MgR0ZHIAp7CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKCXsKCQlmaW5hbCBpbnRbXSBhcnIgPSB7IDM3LCAyMywgMCwgMTcsIDEyLCA3MiwKCQkJCQkJCTMxLCA0NiwgMTAwLCA4OCwgNTQgfTsKCgkJbmV3IEdGRygpLnNvcnQoYXJyKTsKCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspCgkJCVN5c3RlbS5vdXQucHJpbnQoYXJyW2ldICsgIiAiKTsKCX0KCgkvLyBEcml2ZXIgQ29kZQoJcHVibGljIHZvaWQgc29ydChpbnQgYXJyYXlbXSkKCXsKCQlmb3IgKGludCBpID0gMTsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSAKCQl7CgkJCWludCB4ID0gYXJyYXlbaV07CgoJCQkvLyBGaW5kIGxvY2F0aW9uIHRvIGluc2VydAoJCQkvLyB1c2luZyBiaW5hcnkgc2VhcmNoCgkJCWludCBqID0gTWF0aC5hYnMoCgkJCQlBcnJheXMuYmluYXJ5U2VhcmNoKGFycmF5LCAwLCAKCQkJCQkJCQkJaSwgeCkgKyAxKTsKCgkJCS8vIFNoaWZ0aW5nIGFycmF5IHRvIG9uZQoJCQkvLyBsb2NhdGlvbiByaWdodAoJCQlTeXN0ZW0uYXJyYXljb3B5KGFycmF5LCBqLAoJCQkJCQkJYXJyYXksIGogKyAxLCBpIC0gaik7CgoJCQkvLyBQbGFjaW5nIGVsZW1lbnQgYXQgaXRzIAoJCQkvLyBjb3JyZWN0IGxvY2F0aW9uCgkJCWFycmF5W2pdID0geDsKCQl9Cgl9Cn0KCg==