字符串排序算法(冒泡、选择、插入、希尔、快速)

来源:互联网 发布:阿里云开放所有端口 编辑:程序博客网 时间:2024/05/01 23:22
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;}}}

1 0
原创粉丝点击