11.7

发布时间 2023-12-17 17:17:39作者: 刘梦磊

4、编写将n个数从小到大排序的函数,要求该函数返回排序过程中交换的次数,并设计main函数,验证算法正确与否。

       int sort( int arr[], int n) {……….}

程序代码:

   程序代码:

#include <stdio.h>

 

int sort(int array[], int n) {

    int i, j, temp, count = 0;

    for(i = 0; i < n - 1; i++) {

        for(j = i + 1; j < n; j++) {

            if(array[i] > array[j]) {

                // 交换两个数

                temp = array[i];

                array[i] = array[j];

                array[j] = temp;

                count++; // 计数器加1

            }

        }

    }

    return count;

}

 

int main() {

    int n, i, count;

    printf("请输入 n:");

    scanf("%d", &n);

    int array[n];

    printf("请输入 %d 个整数:\n", n);

 

    // 输入 n 个数

    for(i = 0; i < n; i++) {

        scanf("%d", &array[i]);

    }

 

    // 调用函数进行排序

    count = sort(array, n);

 

    printf("排序后的结果为: ");

    for(i = 0; i < n; i++) {

        printf("%d ", array[i]);

    }

    printf("\n");

    printf("交换了 %d 次。\n", count);

 

    return 0;

}