如何在C中更改数组中两个数字的位置?

时间:2017-06-19 01:36:58

标签: c arrays function

我正在使用for在C中创建一个冒泡排序程序,我试图当一个数字比这个数组中的另一个更高时,它们会改变位置。

示例:

用户输入输入:

Input : 5,6,10,9,2

输出将是第一个位置的最高数字,其他序列在一个序列中,如:

Output : 10,9,6,5,2

我的代码:

int array[5],i,changed = false;

for(i = 0; i < 5; i++) {
    if(array[i] > array[i+1]) {
        swap(array[i],array[i+1]); //Function that exchanges place, but I don't know how to do that
        changed = true;
    }
}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

C中的参数函数都是通过复制传递的,因此您需要使用指针:

void swap(int *a, int *b) {
    int save_a = *a;
    *a = *b;
    *b = save_a;
}

然后你可以像这样使用这个函数:

swap(&array[i], &array[i + 1]);

或:

swap(array + i, array + i + 1);