c语言 qsort用法

//qsort
#include <stdio.h>
#include <stdlib.h>
#define maxSize 10
/*
int cmp(const void *a,const void *b){
    int L = *((int *)a);
    int R = *((int *)b);
    if(L>R) return 1;
    else if(L==R) return 0;
    else return -1;

    //return *((int *)a) - *((int *)b);
    //有正数 负数 0 之分即可
    //对int类型数组排序
    //对double类型数组排序  把int变为float即可  不能直接相减
}

int main(){
    int arr[10] = {1,2,0,-1,3,-9,12,1,2,10},n=10;
    qsort(arr,n,sizeof(arr[0]),cmp);//从小到大排序
    for(int i=0;i<n;++i) printf("%d ",arr[i]);
    return 0;
}
 */
/**
 * 排序问题
 * void qsort(基地址,元素个数,元素大小,比较函数);
 * int compare(当前比较元素1地址,当前比较元素2地址);
 * 对char类型数组排序(同int类型)
 *
*/
/*
int cmp(const void *a,const void *b){
    return *((char*)a) - *((char*)b);
}
int main(){
    char s[] = "sjdhbfxvbc";
    int n=10;
    qsort(s,n,sizeof(s[0]),cmp);
    puts(s);//bbcdfhjsvx

    return 0;
}
 */
//对二维char类型数组排序
/*
#include <string.h>
int cmp(const void *a,const void *b){
    char *L = *((char**)a);
    char *R = *((char**)b);
    return strcmp(L,R);
}
int main(){
    char *words[10] = {
            "welcome","to","the","new","world"
    };
    int n = 5;
    qsort(words,n,sizeof(char*),cmp);
    for(int i=0;i<5;++i) puts(words[i]);
    return 0;
}
*/

//对结构体数组的排序
typedef struct structTest{
    int a;
    int b;

}structTest;
//依照a分量进行排序
/*
int cmp(const void *a,const void *b){
    int L = ((structTest*)a)->a;
    int R = ((structTest*)b)->a;
    return L-R;
}

 */

//对结构体数组的二级排序
int cmp(const void *a,const void *b){
    int L = ((structTest*)a)->a;
    int R = ((structTest*)b)->a;
    if(L<R) return -1;
    else if(L==R){
        int l = ((structTest*)a)->b;
        int r = ((structTest*)b)->b;
        return l-r;
    }
    else return 1;
}


int main(){
    structTest structArray[5] = {
            //{1,2},{0,3},{2,1},{5,1},{-1,0}
            {1,2},{0,1},{0,2},{0,3},{-1,0}
    };
    int n=5;
    qsort(structArray,n,sizeof(structArray[0]),cmp);
    for(int i=0;i<5;++i) printf("%d,%d\n",structArray[i].a,structArray[i].b);
    return 0;
}





全部评论

相关推荐

肖先生~:那年秋招闯进一位少年,人们都清楚:成功对他来说只是时间问题
点赞 评论 收藏
分享
孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务