字符串排序(qsort函数用法小结)

首先说一下字符串的排序:

代码(1):

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 1000
#define N 100
int cmp(const void *a,const void *b)
{
    return strcmp((char*)a,(char*)b);
}
int main()
{
    int n;
    char s[MAXN][N];
    cin>>n;
    for(int i=0;i<n;i++)
    {
        scanf("%s",s[i]);
        int j=0;
        while(s[i][j]=='0') j++;//除去前导零
        strcpy(s[i],s[i]+j);
    }
    qsort(s,n,sizeof(s[0]),cmp);
    for(int i=0;i<n;i++)
      printf("%s\n",s[i]);
    return 0;
}


代码(2):

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXN 1000
#define N 100
void Sort(char s[][N],int n)
{

    char temp[20];
    int i,j,k;
    for(i=1;i<n-1;i++)
    {

        k=i;
        for(j=i+1;j<n;j++)
          if(strcmp(s[k],s[j])>0)
            k=j;
        if(k!=i)
        {
            strcpy(temp,s[i]);
            strcpy(s[i],s[k]);
            strcpy(s[k],temp);
        }
    }
}
int main()
{

    char s[MAXN][N];
    int i,j,k,n;
    cin>>n;
    for(i=0;i<n;i++)
        scanf("%s",s[i]);
    Sort(s,n);
    for(i=0;i<n;i++)
        printf("%s\n",s[i]);
    return 0;
}



关于qsort函数的排序,总结如下:

//对int类型数组排序
int num[100];
int cmp(const void *a ,const void *b )
{
    return *(int *)a-*(int *)b;
}
qsort(num,100,sizeof(num[0]),cmp);

//对double类型数组排序
int Mycmp(const void *a ,const void * b)
{
    return (*(double *)a>*(double * )b?1:-1);
}

//结构体一级排序
struct ln
{
    double data;
    int x,y;
};
int Mycmp2(const void *a ,const void * b)
{
    return (((ln *)a)->data>((ln *)b)->data?1:-1);
}

//对结构体二级排序
struct ln
{
    int x;
    int y;
};
//对x按升序排列,如果x相同,则y按降序排列
int Mycmp2(const void *a ,const void * b)
{
    if(((ln *)a)->data==((ln *)b)->data)
      return (((ln *)a)->x>((ln *)b)->x?-1:1);
    else
      return (((ln *)a)->data>((ln *)b)->data?1:-1);
}


 

你可能感兴趣的:(字符串排序(qsort函数用法小结))