- /* 快速排序 - 直接调用库函数 */
-
- /*(前者小于后者输出1,前者大于后者输出-1)——是为降序*/
- /*(前者小于后者输出-1,前者大于后者输出1)——是为升序*/
-
- //助记方法:哪种情况下输出1,升降序便与该种情况吻合( 假设a在序列后,b在序列前)
-
- #include <stdlib.h>
- /*---------------简单整数排序--------------------*/
- int compare(const void *a, const void *b)
- { /* 比较两整数。非降序排列 */
- return (*(int*)a - *(int*)b);
- }
- /* 调用接口 */
- qsort(A, N, sizeof(int), compare);
- /*---------------简单整数排序--------------------*/
- /*--------------- 一般情况下,对结构体Node中的某键值key排序 ---------------*/
- struct Node {
- int key1, key2;
- } A[MAXN];
- int compare2keys(const void *a, const void *b)
- { /* 比较两种键值:按key1非升序排列;如果key1相等,则按key2非降序排列 */
- int k;
- if ( ((const struct Node*)a)->key1 < ((const struct Node*)b)->key1 )
- k = 1;
- else if ( ((const struct Node*)a)->key1 > ((const struct Node*)b)->key1 )
- k = -1;
- else { /* 如果key1相等 */
- if ( ((const struct Node*)a)->key2 < ((const struct Node*)b)->key2 )
- k = -1;
- else
- k = 1;
- }
- return k;
- }
- /* 调用接口 */
- qsort(A, N, sizeof(struct Node), compare2keys);
- /*--------------- 一般情况下,对结构体Node中的某键值key排序 ---------------*/
浙大mooc给出的调用qsort方法
最新推荐文章于 2022-11-01 13:27:01 发布