给定长度为len的数组arr,打印出数组元素的所有排序。 如arr[4]={3,5,2,7},则输出这4个整数的24种排列形式 c语言
时间: 2024-10-18 14:06:45 浏览: 52
求链表长度-数据结构课件
在C语言中,要打印给定数组arr所有可能的排序组合,可以使用回溯法或者递归策略。这里我们提供一个简单的基于递归的解决方案,利用`#include <stdio.h>`库:
```c
#include <stdio.h>
#include <stdlib.h>
// 交换两个元素
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 排列函数
void permute(int arr[], int l, int r) {
if (l == r)
printf("%d ", arr[l]);
else {
for (int i = l; i <= r; i++) {
// 交换当前元素与l位置的元素
swap(&arr[l], &arr[i]);
// 递归处理剩余元素
permute(arr, l + 1, r);
// 回溯,将元素放回原位置
swap(&arr[l], &arr[i]); // 恢复数组顺序
}
}
}
// 主函数
int main() {
int len;
printf("请输入数组长度:");
scanf("%d", &len);
int* arr = malloc(len * sizeof(int));
printf("请输入数组元素:");
for (int i = 0; i < len; i++) {
scanf("%d", &arr[i]);
}
printf("数组元素的所有可能排序:\n");
permute(arr, 0, len - 1); // 调用排列函数
free(arr);
return 0;
}
```
当你运行这个程序并输入示例数组{3,5,2,7}时,它会输出所有可能的排列。
阅读全文