Я пытаюсь запустить этот двоичный код сортировки вставки, используя возвышенный текст. Он только печатает выходные данные несортированного массива, но не отсортированный массив. Он также не показывает никакой ошибки.
// C++ program for Binary Insertion sort
#include <iostream>
using namespace std;
// a function to print the array
void print_array(int arr[], int n)
{
int i;
for(i=0; i<n; i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int binary_search(int arr[], int key, int low, int high)
{
if(high<=low)
{
if(key<arr[high])
return low;
if(key>arr[high])
return low+1;
}
int mid = (low+high)/2;
if(key==arr[mid])
return mid+1;
if(key>arr[mid])
return binary_search(arr, key, mid, high);
return binary_search(arr, key, 0, mid);
}
void insertion_sort(int arr[],int n)
{
int i, j, key, loc;
for(i=0; i<n; i++)
{
key=arr[i];
j = i-1;
// finding location for the selected item to place using binary search
loc = binary_search(arr, key, 0, j);
while(j>=loc)
{
arr[j+1]=arr[j];
j=j-1;
}
arr[j+1]=key;
}
}
int main()
{
int arr[] = {1, 6, 2, 4, 9, 12};
int n=sizeof(arr)/sizeof(arr[0]);
int n2=sizeof(arr[0]);
cout<<"size of n:"<<n<<endl;
cout<<"unsorted array is:";
print_array(arr,n);
insertion_sort(arr,n);
cout<<"sorted array is : ";
print_array(arr,n);
return 0;
}
вывод, который я получаю, выглядит следующим образом:
size of n:6
unsorted array is:1 6 2 4 9 12
[Finished in 5.3s]