对二维数组排序,按照第三列进行排序

2017-11-09  本文已影响0人  blue__sky
#include<iostream>
#include<iomanip>
#include<cstdio>
using namespace std;
int compare(const void* x,const void* y)//按照第三列排序,二维数组,按照哪一列排序,就把【2】改为【n-1】
{
    if(((double*)y)[2] > ((double*)x)[2] ) return +1;
    if(((double*)y)[2] < ((double*)x)[2] ) return -1;
    else return 0;
}
int main()
{
    int m;
    cin>>m;
    double a[25][3];
    for(int i=0;i<m;i++)
    {
        cin>>a[i][0]>>a[i][1]>>a[i][2];
    }
    qsort(a,m,sizeof(a[0]),&compare);//按照第三列排序
    for(int i=0;i<m;i++)
         cout<<a[i][0]<<' '<<a[i][1]<<' '<<a[i][2]<<endl;
        return 0;
}

或者 对整型二维数组第三列排序

#include<iostream>
#include<iomanip>
#include<cstdio>
using namespace std;
int compare(const void *x,const void *y)//按照第三列升序排序,二维数组,按照哪一列排序,就把【2】改为【n-1】
{
    return ((int*)x)[2] - ((int*)y)[2];
}
int main()
{
    int m;
    cin>>m;
    int a[25][3];
    for(int i=0;i<m;i++)
    {
        cin>>a[i][0]>>a[i][1]>>a[i][2];
    }
    qsort(a,m,sizeof(int)*3,compare);//按照第三列排序,一共n列,就sizeof(int)*n;
    for(int i=0;i<m;i++)
         cout<<a[i][0]<<' '<<a[i][1]<<' '<<a[i][2]<<endl;
        return 0;
}

或者对一维数组排序

#include<iostream>
#include<iomanip>
#include<cstdio>
using namespace std;
int compare(const void *x,const void *y)//一维数组排序 升序
{
    return *(int*)x - *(int*)y;
}
int main()
{
    int m;
    cin>>m;
    int a[25];
    for(int i=0;i<m;i++)
    {
        cin>>a[i];
    }
    qsort(a,m,sizeof(int),compare);
    for(int i=0;i<m;i++)
         cout<<a[i]<<' '<<endl;
    return 0;
}

参考网址:http://blog.csdn.net/eastmount/article/details/49039741

上一篇下一篇

猜你喜欢

热点阅读