c语言编程,对数组元素随机赋值,然后对数组元素冒泡排序,并统计交换次数,要求输出每轮排序结果

如题所述

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LENGTH 10

void get_array(int * array, int len);
void bubble_sort(int * array, int len);
void print_array(int * array, int len);

int main()
{
    int array[LENGTH] = {0};
    get_array(array, LENGTH);
    bubble_sort(array, LENGTH);

    return 0;
}

void get_array(int * array, int len)
{
    srand(time(NULL));
    for (int i = 0; i < len; i++)
    {
        array[i] = rand() % 90 + 10; // [10, 99]
    }
    
    print_array(array, len);
}

void print_array(int * array, int len)
{
    for (int i = 0; i < len; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
}

void bubble_sort(int * array, int len)
{
    int i = 0, j = 0, temp = 0, count = 0;
    for (j = 0; j < len - 1; j++)
    {
        for (i = 0; i < len - 1 - j; i++)
        {
            if(array[i] > array[i + 1])
            {
                temp = array[i];
                array[i] = array[i + 1];
                array[i + 1] = temp;
                count++;
            }
        }
        printf("第[%d]趟排序后的数组:\n", j+1);
        print_array(array, len);
    }
    printf("共交换[%d]次\n", count);
}

温馨提示:答案为网友推荐,仅供参考
相似回答