#include <stdio.h>
void qsort(int a[], int s, int e) {
if(s >= e) {
return;
}
int i = s, j = e, t = 0;
while (i < j) {
while (i < j && a[j] > a[s]) {
--j;
}
while (i < j && a[i] >= a[s]) {
++i;
}
t = a[i];
a[i] = a[j];
a[j] = t;
}
t = a[i];
a[i] = a[s];
a[s] = t;
qsort(a, s, i - 1);
qsort(a, i + 1, e);
}
#define NUM 10
int main(int argc, char **argv) {
int a[NUM] = {9, 2, 6, 3, 5, 0, 8, 7, 4, 1};
qsort(a, 0, NUM - 1);
for (size_t i = 0; i < NUM; ++i) {
fprintf(stdout, "%d ", a[i]);
}
fprintf(stdout, "\n");
}
//没有编译,如有写错请见谅。
分享到:
相关推荐
其中,"qsort的使用"涉及到的是C语言标准库中的排序函数。尽管C++有更现代的排序工具如`std::sort`,但`qsort`仍然是一个值得了解的经典算法。`qsort`接受一个指向数组的指针、数组元素个数、每个元素的大小以及一个...
通过对标准库源代码的学习,开发者能够更好地掌握C语言的本质,写出更高效、更健壮的代码。 总之,《C标准库源代码》是一份宝贵的教育资源,它不仅让我们了解C语言的底层机制,还提供了一个学习和参考的实例,帮助...
9. 链表和队列:虽然C标准库没有直接提供链表或队列的数据结构,但提供了`malloc`和`free`等工具,开发者可以自己实现这些数据结构。 10. 错误处理:`assert.h`头文件提供了断言机制,用于在调试阶段检查程序的正确...
5. 标准工具库:通常在`<stdlib.h>`头文件中,提供了多种实用工具,包括动态内存管理、程序控制、随机数生成等函数,例如`malloc`、`free`、`qsort`、`exit`等。 6. 通用工具库:在`<assert.h>`、`<limits.h>`、`...
- `qsort` 提供快速排序功能,适用于任意类型的数据。 - `bsearch` 实现二分查找。 10. **位操作**: - `bitwise operators`: `&`(按位与),`|`(按位或),`^`(按位异或),`~`(按位取反)以及左移和右移...
7. **排序和搜索(Sorting and Searching)**:`<stdlib.h>`和`<string.h>`中的`qsort`、`bsearch`等函数,提供了基本的排序和查找功能。了解它们的内部工作原理,可以提高算法的实现效率。 8. **时间处理(Time ...
12. **字符分类和转换库**(ctype.h): `isalpha`、`isdigit`、`isspace`等函数用于检查字符类型,`tolower`和`toupper`实现字符大小写的转换。 以上只是C语言标准库的一部分,每个函数都有其特定的用途和用法,掌握...
3. 数组和内存管理:`stdlib.h`提供了`malloc`、`calloc`、`realloc`和`free`等内存分配和释放函数,以及`rand`随机数生成和`qsort`排序函数。 4. 数学运算:`math.h`头文件包含了基本的数学函数,如平方根`sqrt`、...
5. **排序与搜索函数**:`qsort` 是一个通用的快速排序函数,`bsearch` 则用于二分查找。了解它们的源码,有助于掌握高级排序和搜索算法。 6. **时间处理函数**:`time`、`localtime`、`strftime` 等函数用于处理...
8. 非标准但常用的功能:如qsort用于对数组进行快速排序,rand和srand提供随机数生成。 P.J.Plauger的著作详细解释了这些函数的工作原理、参数含义和返回值,通过阅读本书,开发者不仅可以了解如何使用这些库函数,...
5. 集合和排序:`stdlib.h`中的`qsort()`提供了一种通用的排序机制,源码中可能会包含不同的排序算法实现。 6. 时间和日期:`time.h`中的`time()`、`ctime()`等函数处理时间,源码中会涉及到系统调用和时间转换。 ...
10. **集合数据结构**: `stdlib.h`中的`qsort`函数提供了一种通用的排序算法,`setjmp`和`longjmp`用于非局部跳转,实现异常处理机制。 11. **线程和同步**: 虽然C标准库本身不包含线程和同步支持,但在C11标准中...
8. **搜索和排序**:提供了各种排序和查找算法的函数,如`qsort`, `bsearch`等,适用于数组和列表的处理。 9. **模式匹配**:介绍正则表达式的使用,如`regex`函数族,用于文本模式的匹配和搜索。 10. **输入/输出...
- `qsort`:通用排序函数,头文件 `stdlib.h`。 - `bsearch`:二分查找,也在 `stdlib.h`。 10. **其他**: - `rand`, `srand`, `rand_r`:随机数生成,头文件 `stdlib.h`。 - `atof`, `atoi`, `atol`:字符串...
在C语言中,可以使用标准库中的`fopen`函数打开文件,`fgets`或`fscanf`读取文件内容,`fprintf`或`fwrite`写入数据。CSV文件的特点是每一行数据由逗号分隔,因此在读取时需要注意解析这些分隔符。在写入时,需要...
下表展示了STL在数值计算方面与C语言标准排序函数qsort以及其他手写代码和算法的比较结果。 | 数据类型 | C语言qsort | 手写代码 | Numerical Recipes | STL | |----------|------------|----------|--------------...
9. 递归和算法:虽然不是特定的库函数,但C语言支持递归函数(如`factorial()`计算阶乘)和各种算法实现(如排序算法`qsort()`,搜索算法`bsearch()`)。 10. 错误处理:`errno`全局变量存储了最近一次系统调用或...
C语言提供了标准库函数`fopen()`、`fwrite()`、`fread()`等用于文件操作。在学生信息管理系统中,我们可以先将链表中的所有学生信息序列化为二进制数据,然后写入文件;反之,从文件读取数据时,再反序列化回链表。 ...
- `qsort`:快速排序。 - `bsearch`:二分查找。 6. 时间和日期:time.h - `time`,`clock`:获取当前时间戳和程序运行时间。 - `strftime`,`localtime`:处理日期和时间格式。 7. 错误处理和诊断:assert.h ...
C语言库函数分为标准库和非标准库,其中标准库最为常用,遵循ANSI C或C11等标准。 1. **标准输入/输出库**:这是C语言的基础,包括`printf`、`scanf`等函数,用于数据的输出和输入。`printf`用于格式化输出,可以...