C语言数组遍历所有排列方式
时间: 2024-05-02 08:21:49 浏览: 18
以下是C语言中数组遍历所有排列方式的示例代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
void permute(int arr[], int start, int end) {
int i;
if (start == end) {
for (i = 0; i <= end; i++) {
printf("%d ", arr[i]);
}
printf("\n");
} else {
for (i = start; i <= end; i++) {
swap(&arr[start], &arr[i]);
permute(arr, start + 1, end);
swap(&arr[start], &arr[i]);
}
}
}
int main() {
int arr[] = {1, 2, 3};
int n = sizeof(arr) / sizeof(arr[0]);
permute(arr, 0, n - 1);
return 0;
}
```
该示例代码使用递归方法实现了对给定数组的所有排列方式的遍历。在函数permute中,start和end分别表示要遍历的数组的起始和结束下标,i循环遍历数组中[start, end]范围内的元素,将每个元素逐个置于起始位置,然后对剩余的元素进行递归,继续寻找所有排列方式。递归结束后,将原数组还原到初始状态,以便进行下一次排列。当start等于end时,说明已经遍历完了所有元素,将当前数组打印出来即可。在主函数中,将要遍历的数组传入permute函数即可开始遍历。