C 整数排序

来源:互联网 发布:seo待遇 编辑:程序博客网 时间:2024/05/22 11:36

1. fgets处理单行输入

2.  分割字符串, 将数字字符串放到指针数组中

3. 处理字符串前缀zeros, stripping it

4. 字符串数字比较大小

5. 字符串selection sort



#include <stdio.h>  #include <string.h>   #define MAX_SIZE 5000  int cmpnumstr(char * str1, char * str2)  {     int len1 = 0;     int len2 = 0;     len1 = strlen(str1);     len2 = strlen(str2);         if(len1 > len2)     {         return 1;     }     else if(len1 < len2)     {         return -1;     }     else     {         return strncmp(str1, str2, len1) ;     }  }    void sort(char **array, int n)     {      char *temp = 0;      int i,j,k;        for(i=0;i<n-1;i++)      {          k=i;          for(j=i+1;j<n;j++)          {              if(cmpnumstr(array[k],array[j])<0)                k=j;          }          if(k!=i)          {              temp=array[i];              array[i]=array[k];              array[k]=temp;          }      }  }  int main()   {      char buf[MAX_SIZE];     int i = 0;     int j = 0;     int k = 0;     int zero = 0;     int pzero = 0;     int num = 0;     int il = 0;     char *p[MAX_SIZE];        fgets(buf,MAX_SIZE,stdin);     il = strlen(buf);     //buf[il-1]=0; //trailing \n      if(il >4097)      {         return 0;     }     for(i=0; i<il;i++)     {         if(buf[i]<'0' || buf[i]>'9')          {             buf[i] = 0;         }     }           if(buf[0] == '0' && buf[1] != 0)     {        buf[0] = 0;      }     for(i=0; i<il-1;i++)     {         if(buf[i] == 0)          {             if(buf[i+1] == '0' && buf[i+2] != 0)             {                buf[i+1] = 0;              }         }     }       j = 0; zero = 1;      for(i=0; i<il; i++)     {        if(buf[i] == 0)        {            zero = 1;        }        else        {            if(zero == 1)            {               //strip prefix zeros               p[j++] = buf+i;               zero = 0;                        }        }     }     num = j;     sort(p, num);        for(k=0; k<num-1;k++)     {       printf("%s ", p[k]);     }     printf("%s\n", p[k]);      return 0;  }  


0 0
原创粉丝点击