int Partition(char *s, int low, int high)
{
char temp;
temp = s[low];
while(low < high)
{
while(low<high && s[high]>=temp)
--high;
s[low] = s[high];
while(low<high && s[low]<=temp)
++low;
s[high] = s[low];
}
s[low] = temp;
return low;
}
void QuickSortOfString(char *s, int low, int high)
{
int label;
while(low < high)
{
label = Partition(s,low,high);
QuickSortOfString(s,low,label-1);
low = label + 1;
}
}
void swap(char *a, char *b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
}
void BubbleSort(char *s, int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=1;j<n-i;j++)
if(s[j-1]>s[j])
swap(&s[j-1],&s[j]);
}
}
void SelectSort(char *s ,int n)
{
int i,j,k;
for(i=0;i<n-1;i++)
{
k = i;
for(j=i+1; j<n; j++)
if(s[j]<s[k])
k=j;
if(k!=i)
{
swap(&s[k],&s[i]);
}
}
}
void InsertSort(char *s, int n)
{
int i,j;
char temp;
for(i=1; i<n; i++)
{
j = i-1;
temp = s[i];
while(j>=0 && temp<s[j])
{
s[j+1] = s[j];
j--;
}
s[j+1] = temp;
}
}
void ShellSort(char *s, int n)
{
int i,j,len;
char temp;
for(len=n/2;len>=1;len=len/2)
{
for(i=len;i<n;i++)
{
j=i-len;
temp = s[i];
while(j>=0 && temp<s[j])
{
s[j+len]=s[j];
j=j-len;
}
s[j+len]=temp;
}
}
}