C语言中如何将一个数组按照绝对值排序
时间: 2024-10-07 21:04:49 浏览: 26
2022年计算机二级C语言上机题库.pdf
在C语言中,你可以使用标准库函数`qsort()`和自定义比较函数来对数组元素按绝对值进行排序。`qsort()`函数需要一个指针数组、元素大小、排序起始位置、终止位置以及指向比较函数的指针。这里是一个简单的步骤说明:
1. 定义一个比较函数,比如`compare_abs()`,该函数接受两个整数作为参数,并返回它们绝对值的比较结果。如果第一个元素的绝对值小于第二个,返回一个负数;如果相等,返回0;如果大于,返回正数。
```c
int compare_abs(const void *a, const void *b) {
int val1 = *((int*)a);
int val2 = *((int*)b);
return (val1 < 0 ? -val1 : val1) - (val2 < 0 ? -val2 : val2);
}
```
2. 定义你要排序的数组和它的长度。
```c
int arr[] = {5, -3, 8, -7, 2};
size_t array_size = sizeof(arr) / sizeof(arr[0]);
```
3. 使用`qsort()`函数进行排序,传入数组的首地址、数组大小、比较函数。
```c
qsort(arr, array_size, sizeof(int), compare_abs);
```
现在,`arr`数组就会按照元素的绝对值升序排列了。
阅读全文