c语言

C语言怎么将一串数字全排序

小亿
119
2024-03-16 20:36:54
栏目: 编程语言

要将一串数字进行全排列,可以使用递归算法来实现。以下是一个C语言实现的全排列算法示例:

#include <stdio.h>

// 交换两个元素的值
void swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
}

// 递归函数,生成所有可能的排列
void permute(int *nums, int start, int end) {
    if (start == end) {
        for (int i = 0; i <= end; i++) {
            printf("%d ", nums[i]);
        }
        printf("\n");
    } else {
        for (int i = start; i <= end; i++) {
            swap(&nums[start], &nums[i]);
            permute(nums, start + 1, end);
            swap(&nums[start], &nums[i]);  // 恢复原数组顺序
        }
    }
}

int main() {
    int nums[] = {1, 2, 3}; // 要进行全排列的数字序列
    int n = sizeof(nums) / sizeof(nums[0]); // 数组长度
    permute(nums, 0, n - 1);
    
    return 0;
}

运行以上代码,会输出数组 {1, 2, 3} 的所有全排列结果。你可以根据需要修改输入数组来得到其他数字的全排列。

0
看了该问题的人还看了