求助qsort函数问题
对于两个数组l[4],m[4]怎么用qsort对l[4]排序,使m[4]的下标随着l[4]的下标改变
比如说l[4] = {2,4,3,1}
m[4] = {1,5,2,7}
要求最后结果为l[4] = {1,2,3,4}
m[4] = {7,1,2,5}
如果不用结构体做,该怎么做
cmp函数不会写
问题点数:100、回复次数:9Top
1 楼a109788522()回复于 2005-11-01 22:47:17 得分 0
上次考C++Top
2 楼a109788522()回复于 2005-11-01 22:48:34 得分 0
上次考C++的时候,也是了这个题目,不过以前没有看到这个函数,望高人指点Top
3 楼chunhai12(小海)回复于 2005-11-01 22:57:32 得分 0
MSDN上有例子
/* QSORT.C: This program reads the command-line
* parameters and uses qsort to sort them. It
* then displays the sorted arguments.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
void main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;
/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( "%s ", argv[i] );
printf( "\n" );
}
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
Top
4 楼mostideal(三甲)回复于 2005-11-01 23:12:36 得分 0
学习。。。Top
5 楼K()回复于 2005-11-02 00:31:22 得分 0
看看...Top
6 楼feitian124(从大二开始)回复于 2005-11-02 01:28:30 得分 0
不懂什么叫qsortTop
7 楼foochow(无聊,灌水......)回复于 2005-11-02 07:39:28 得分 0
只要注意下参数就可以了...Top
8 楼swordfly369(剑飞)回复于 2005-11-02 09:56:54 得分 0
就是这里的参数不懂啊,有哪位可以解释一下参数,这里为什么是void型的指针,如果其他类型的要怎么转换Top
9 楼skfox(sky)回复于 2005-11-02 10:08:00 得分 100
实现楼主功能的代码如下,比较函数按照类似strcmp函数的处理方式写就行了
#include <stdlib.h>
#include <stdio.h>
int sort_function( const void *a, const void *b);
int list[4][2] = { {2,1}, {4,5},{3,2}, {1,7}};
int main()
{
qsort((void *)list, 4, sizeof(list[0]), sort_function);
for (x = 0; x < 4; x++)
{
for (j = 0; j < 2; j++)
printf("%d", list[x][j]);
printf("\n");
}
return 0;
}
int sort_function( const void *a, const void *b)
{
int * aa = (int *) a;
int * bb = (int *) b;
if(*aa > *bb)
return 1;
if(*aa<*bb)
return -1;
return 0;
}Top




