#include<iostream>
#include<cmath>
#include<vector>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
typedef struct {
int* elem;
int Tablelen;
}SStable;
void InitTable(SStable &S,int len)
{
S.elem = new int[len];
S.Tablelen = len;
}
int Search_seq(SStable ST, int key)
{
int i;
ST.elem[0] = key;
for (i = ST.Tablelen; ST.elem[i] != key; --i);
return i;
}
void quick_sort(SStable &S, int l, int r)
{
if (l >= r)
return;
int x = S.elem[(r + l) / 2];
int i = l - 1, j = r + 1;
while (i < j)
{
do i++; while (S.elem[i] < x);
do j--; while (S.elem[j] > x);
if (i < j)
swap(S.elem[i], S.elem[j]);
}
quick_sort(S, l,j),
quick_sort(S,j + 1, r);
return;
}
int Binary_Search(SStable S, int key)
{
int low = 0, high = S.Tablelen - 1, mid;
while (low <= high)
{
mid = (low + high) / 2;
if (S.elem[mid] == key)
return mid;
else if (S.elem[mid] > key)
high = mid - 1;
else
low = mid + 1;
}
return -1;
}