递归:

#include <stdio.h>

void bubbleSort (int *array ,int num);
void printArray(int *array, int num);

void bubbleSort (int *array , int num)
{
    if(num <= 2)
    {
        return;
    }

    int temp = 0;//临时变量
    char times; //用于判断交换次数 

    for (int i = 0; i < num - 1; i++) 
    /* “num - 1” -> 防止 i+1 造成数组越界访问 */
    {
        
        if (array[i] > array[i+1])
        {
            temp = array[i];
            array[i] = array[i+1];
            array[i+1] = temp;
            times++;
            continue;
        }
    }

    if (times == 0)
    {
        return;
    }

    bubbleSort(array,num - 1);
    
}

void printArray(int *array, int num)
{
    for (int i = 0; i < num; i++)
    {
        printf("%2d ",*(array + i));
    }
    putchar('\n');
    return;
}

int main(void)
{
    int array[] = {9,10,3,4,2,5,1,7,8,6};
    int num = sizeof(array) / sizeof(int);
    printArray(array,num);
    bubbleSort(array,num);
    printArray(array,num);
    return 0;
}