C语言用宏函数实现一个冒泡排序
时间: 2023-12-05 20:09:16 浏览: 37
可以使用如下的宏定义来实现冒泡排序:
```
#define SWAP(x, y) do { \
typeof(x) temp = x; \
x = y; \
y = temp; \
} while (0)
#define BUBBLE_SORT(arr, len) do { \
for (int i = 0; i < len - 1; ++i) { \
for (int j = 0; j < len - i - 1; ++j) { \
if (arr[j] > arr[j + 1]) { \
SWAP(arr[j], arr[j + 1]); \
} \
} \
} \
} while (0)
```
使用时可先定义一个数组,然后调用 BUBBLE_SORT 宏即可。
示例代码如下:
```
#include <stdio.h>
#define SWAP(x, y) do { \
typeof(x) temp = x; \
x = y; \
y = temp; \
} while (0)
#define BUBBLE_SORT(arr, len) do { \
for (int i = 0; i < len - 1; ++i) { \
for (int j = 0; j < len - i - 1; ++j) { \
if (arr[j] > arr[j + 1]) { \
SWAP(arr[j], arr[j + 1]); \
} \
} \
} \
} while (0)
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
BUBBLE_SORT(arr, n);
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:1 1 2 3 3 4 5 5 5 6 9