永发信息网

qsort如何实现快速排列?

答案:2  悬赏:70  手机版
解决时间 2021-02-24 01:38
  • 提问者网友:末路
  • 2021-02-23 15:05
qsort如何实现快速排列?
最佳答案
  • 五星知识达人网友:深街酒徒
  • 2021-02-23 15:51
比如:对一个长为1000的数组进行排序时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数随自己的命名。 qsort(a,1000,sizeof(int ),comp); 其中comp函数应写为: int comp(const void *a,const void *b) { return *(int *)a-*(int *)b; } 是对一个二维数组的进行排序: int a[1000][2]; 其中按照a[0]的大小进行一个整体的排序,其中a[1]必须和a[0]一起移动交换。 qsort(a,1000,sizeof(int)*2,comp); int comp(const void *a,const void *b) { return ((int *)a)[0]-((int *)b)[0]; }
全部回答
  • 1楼网友:woshuo
  • 2021-02-23 16:17
struct sortdata //存放线程的函数mysort的数据 { int a[10]; int n; }mydata; void *mysort(void * data) { sort(data->a, data->n); //qsort 里面的sort函数。 return 0; } void myexit() //按任意键退出。或者随便来个别的功能也一样。多线程嘛。 { getchar(); } int main() { int a[10] = {5, 3, 1, 2, 7, 9, 6, 8, 4, 0}; pthread_t t1; mydata.n = 10; mydata.a = a; if(pthread_create(&t1, null, mysort, (void*)&data)) perror("thread create failed.\n"); myexit(0); return 0; } 我也不知道你qsort的参数是什么。大概就这意思,楼主能看明白吧。代码纯手打,不过没运行过,你试试吧。 大概意思就是2个函数并行执行,一边查看你是否有输入,一边排序,如果你数组够大的话,比如100000,可能更加明白。你按一下任意键 马上就强制退出不sort了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯