69,368
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SZ 10
typedef struct node
{
unsigned long id; // 排序时,要根据结构体的id进行排序
} node;
int cmp(const void* pn1, const void* pn2); // 比较函数
int main(int argc, char* argv[])
{
int nLoop = 0;
node* Array[SZ];
srand(time(NULL));
for(nLoop = 0; nLoop < SZ; ++nLoop)
{
Array[nLoop] = malloc(sizeof(node));
Array[nLoop]->id = rand();
printf("%d ", (Array[nLoop])->id );
}
printf("\n\n");
qsort(Array, SZ, sizeof(node*), cmp);
for(nLoop = 0; nLoop < SZ; ++nLoop)
{
printf("%d ", (Array[nLoop])->id );
}
printf("\n\n");
return 0;
}
int cmp(const void* pn1, const void* pn2) // 比较函数
{
const node* p1 = pn1;
const node* p2 = pn2;
int val;
if(p1->id < p2->id)
{
val = -1;
}
else if (p1->id == p2->id)
{
val = 0;
}
else
{
val = 1;
}
return val;
}
int cmp(const void* pn1, const void* pn2) // 比较函数
{
int val;
if (pn1 && pn2)
{
const node ** p1 = pn1;
const node ** p2 = pn2;
if((*p1)->id < (*p2)->id)
{
val = -1;
}
else if ((*p1)->id == (*p2)->id)
{
val = 0;
}
else
{
val = 1;
}
}
else
{处理异常情况} //若不加这一句,若出现异常,会return初始值 val=0,但是结果会不对
return val;
}
int cmp(const void* pn1, const void* pn2) // 比较函数
{
int val;
if (pn1 && pn2)
{
const node ** p1 = pn1;
const node ** p2 = pn2;
if((*p1)->id < (*p2)->id)
{
val = -1;
}
else if ((*p1)->id == (*p2)->id)
{
val = 0;
}
else
{
val = 1;
}
}
else
val = 1;
return val;
}
int cmp(const void* pn1, const void* pn2) // 比较函数
{
int val;
if (pn1 && pn2)
{
const node ** p1 = pn1;
const node ** p2 = pn2;
if((*p1)->id < (*p2)->id)
{
val = -1;
}
else if ((*p1)->id == (*p2)->id)
{
val = 0;
}
else
{
val = 1;
}
}
return val;
}
int cmp(const void* pn1, const void* pn2) // 比较函数
{
const node** p1 = pn1;
const node** p2 = pn2;
int val;
if((*p1)->id < (*p2)->id)
{
val = -1;
}
else if ((*p1)->id == (*p2)->id)
{
val = 0;
}
else
{
val = 1;
}
return val;
}