#include <stdio.h>
void pt_arr(int a[], int len)
{
for (int i = 0; i < len; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
}
void swap(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubble_sort(int a[], int len)
{
int i,j,t;
pt_arr(a, len);
for (i = 0; i < len - 1; ++i)
{
for (j = 0; j < len - i - 1; ++j)
{
if (a[j] > a[j + 1])
{
swap(a + j, a + j + 1);
}
}
pt_arr(a, len);
}
}
void insert_sort(int a[],int len)
{
int i,j,key;
pt_arr(a, len);
for (i = 1; i < len; ++i)
{
key = a[i];
for (j = i-1; a[j] > key && j >= 0; --j)
{
a[j+1] = a[j];
}
a[j+1] = key;
pt_arr(a, len);
}
}
void select_sort(int a[],int len)
{
int i,j,k,n;
pt_arr(a, len);
for (i = 0; i < len - 1; ++i)
{
k = a[i];
n = i;
for (j = i+1; j < len; ++j)
{
if(a[j] < k)
{
k = a[j];
n = j;
}
}
swap((a + n), (a + i));
pt_arr(a, len);
}
}
void bidirectional_select_sort(int a[], int len)
{
int i, j, max, min;
pt_arr(a, len);
for (i = 0; i < len/2; ++i)
{
max = len - i - 1;
min = i;
for (j = i; j < len - i; ++j)
{
if (a[max] < a[j])
{
max = j;
}
if (a[min] > a[j])
{
min = j;
}
}
if(i == max) max = min;
swap(&a[min] , &a[i]);
swap(&a[max], &a[len-i-1]);
pt_arr(a, len);
}
}
int sequential_search(const int a[],int len,int key)
{
int i,n;
n = -1;
for (i = 0; i < len; ++i)
{
if (a[i] == key) return i;
}
return -1;
}
int binary_search(const int a[], int len, int key)
{
int left,right,mid;
left = 0, right = len-1;
while(left <= right)
{
mid = (right - left)/2 + left;
if(a[mid] > key)
{
right = mid - 1;
} else if (a[mid] < key)
{
left = mid + 1;
}else if(a[mid] == key){
return mid;
}
}
return -1;
}
int r_b_search(const int a[], int left, int right, int key)
{
int mid = (right - left)/2 + left;
if(a[mid] < key)
{
return r_b_search(a, mid + 1, right,key);
}else if(a[mid] > key)
{
return r_b_search(a, left, mid - 1,key);
}else{
return mid;
}
}
int main()
{
return 0;
}