int InsertSort(int *a, int len)
{
int i;
for(i = 1; i < len; i++)
{
int j = i-1;
int temp = a[i];
while((j >= 0)&&(a[j] > temp))
{
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
int ShellSort(int *a, int len, int d)
{
int i;
for(i = 0; i < len; i++)
{
int j = i-d;
int temp = a[i];
while((j>=0)&&(j<len)&&(a[j]>temp)
&&((j+d)>=0)&&((j+d) < len))
{
a[j+d] = a[j];
j-= d;
}
a[j+d] = temp;
}
}
int BinaryInsertSort(int *a, int len)
{
int i = 0;
for(i = 0; i < len; i++)
{
int temp = a[i];
int low = 0, high = i-1, mid;
while(high >= low)
{
mid = (low + high)/2;
if(a[mid] > temp)
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
int j = i - 1;
while((j >= 0)&&(j > high))
{
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
int QuickSort(int *a, int low, int high)
{
printf("a[%d]=%d \n", i, a[i]);
PrintArray(array, LENGTH);
int temp;
int i = low, j = high;
if( low < high )
{
temp = a[low];
while( i < j )
{
while((j > i) && (a[j] >= temp)) j--;
if( i < j )
{
a[i] = a[j];
i++;
}
while((i < j) && a[i] < temp) i++;
if( i < j )
{
a[j] = a[i];
j--;
}
a[i] = temp;
QuickSort(a, low, i-1);
QuickSort(a, i+1, high);
}
}
}
int kmp(char *a, char* b)
{
int i=0, j=0;
while((j < strlen(b)) && (i < strlen(a)))
{
if((j == -1) || (a[i] == b[j]))
{
i++;
j++;
}
else
{
j = next[j];
}
}
if(j = strlen(b))
{
return i - j;
}
else
{
return -1;
}
}