qsort

时间:2024-12-10 12:29:51编辑:阿奇

如何用C语言的qsort对二维数组排序?

建议你这样试试看:先定义数组大小:然后定义一个数组比较函数:注意事项:更安全的调用方式为qsort_s;然后调用 qsort函数进行排序,具体逻辑如下:代码合并如下:这里只是根据你的数据生成了二维数组,可以根据你的具体情况进行调整;另外,关于qsort函数的用法,参考:qsort关于比较函数的返回值,这里有一个表:最后,以上代码的运行结果如下:

我是学C++的菜鸟,想问个问题;在C++中,QSORT()是这么用的?

int compare_ints( const void* a, const void* b ) {
int* arg1 = (int*) a;
int* arg2 = (int*) b;
if( *arg1 < *arg2 ) return -1;
else if( *arg1 == *arg2 ) return 0;
else return 1;
}

int array[] = { -2, 99, 0, -743, 2, 3, 4 };
int array_size = 7;

...

printf( "Before sorting: " );
for( int i = 0; i < array_size; i++ ) {
printf( "%d ", array[i] );
}
printf( "/n" );

qsort( array, array_size, sizeof(int), compare_ints );

printf( "After sorting: " );
for( int i = 0; i < array_size; i++ ) {
printf( "%d ", array[i] );
}
printf( "/n" );

这个函数其实是C语言提供的排序函数,q是quick的意思,qsort就是快速排序算法的意思,知道了 吧,快速排序可不是fast sort哦

反证一般正确的用法是上面这种,输出结果就是

Before sorting: -2 99 0 -743 2 3 4
After sorting: -743 -2 0 2 3 4 99

也就是从小大排序

你的用法是什么,错误乱七八糟的

定义是
#include
void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );

你的代码这个就有点乱来了,首先第二个参数是给qsort的数组大小的参数,你给的是15,但是你的数组numbers只有2个空间,这基本上会导致内存泄露的,虽然在实验中不一定真的会这样吧

如果能正确运行,那么存在number[0]里面的数值应该是为了对15个元素进行排序而number的比较次数。。。你的程序给出的函数只返回0,也就代表两个参数只相等,也就是相当于qsort在对一个完全相等的,15个元素的数组进行排列,答案是什么其实是不一定,因为qsort的内部实现具体怎么样其实是不一定的,说是快排不等于世界上所有的快排算法都一样


上一篇:标志607

下一篇:没有了