求用C语言利用快速排序法完成数组排序,完成如下例子,谢谢谢谢:

排序前:
1 1 1 1.1
1 1 3 1.2
2 1 3 2.9
1 2 1 1.2
2 1 2 2.8
1 2 2 1.5
2 2 2 3.1
1 2 3 2.3
2 2 1 3.0
1 1 2 2.5
1 2 4 2.4
1 3 1 2.6
2 1 1 2.7
2 2 3 3.2

排序后:
1 1 1 1.1
1 1 2 2.5
1 1 3 1.2
1 2 1 1.2
1 2 2 1.5
1 2 3 2.3
1 2 4 2.4
1 3 1 2.6
2 1 1 2.7
2 1 2 2.8
2 1 3 2.9
2 2 1 3.0
2 2 2 3.1
2 2 3 3.2

0

1个回答

qsort对结构体进行快速排序,直接上代码如下:

 #include<stdio.h>
#include<stdlib.h>

struct item
{
    int a;
    int b;
    int c;
    double d;
};

int cmp(const void *a, const void*b)
{
    struct item *c = (struct item *)a;
    struct item *d = (struct item *)b;
    if(c->a != d->a)
        return c->a - d->a;
    else if(c->b != d->b)
        return c->b - d->b;
    else if(c->c != d->c)
        return c->c - d->c;
    else
        return c->d < d->d;
}

int main()
{
    int n,i,a,b,c;
    double d;
    struct item m[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d%d%lf",&a,&b,&c,&d);
        m[i].a = a;
        m[i].b = b;
        m[i].c = c;
        m[i].d = d;
    }

    qsort(m,n,sizeof(m[0]),cmp);

    printf("排序后:\n");
    for(i=0;i<n;i++)
        printf("%d %d %d %.1lf\n",m[i].a,m[i].b,m[i].c,m[i].d);

    system("pause");
    return 0;
}

运行结果如下:

图片说明

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

2
C语言数组排序及其他算法思想
10
c语言交换数组交换无效,求大神帮助,小弟在线等
5
C语言排序求帮忙查bug
1
javascript读取2个json数组,并且合并成一个数组,再排序
4
javascript如何用数组实现冒泡排序的算法,不用sort函数怎么实现?
2
javascropt语言怎么实现数组逆向排序,也就是大的数字反倒要排前面,这个思路是怎么样的
4
javascrip语言,怎么实现两个数组类似excel的 rank 函数
1
c语言编写函数问题,要求如下
1
java程序设计(字符串排序)
3
Java用怎样用main方法排序?
1
c# 在命令行中输入任意10个字符串,根据字符串类型将输入的数据放入到不同数组中,最后将数组进行排序
4
请问想完成如下数组的排序,有什么方法,谢谢?
1
用C语言完成数组排序,并对最后一列数据按条件求和,具体任务如下:
1
javascrpt语言怎么实现对数组排序,用log输出,不能调用系统函数,
1
用C语言完成数组排序,并对最后一列数据按条件求和,且求和后输出需要的数据,具体任务如下:
0
用C语言完成数组排序计算后,输出需要的计算数据:
2
C语言冒泡排序法出现Debug/实验7-8.exe : fatal error LNK1120: 1 unresolved externals错误 怎么办?
1
【C语言问题】同一个问题利用指针的两种实现,另一种出现问题,求大佬解答
1
【C语言】结构体数组作为函数参数的排序问题
2
求用C语言利用快速排序法完成数组排序,完成如下例子,谢谢谢谢: