书本上的也不行啊 冒泡法

看来冒泡法也只能针对个例!

img

img

img

搞复杂一点

img

#include <stdio.h>

void SwapNumberValue(int* v1, int* v2)
{
    int temp = *v1;
    *v1 = *v2;
    *v2 = temp;
}

void BubbleSort(int* numbers, int* numberCounts)
{
    for (int i = 0; i < *numberCounts - 1; i++) 
    {
        for (int j = 0; j < *numberCounts - 1 - i; j++) 
        {
           if(*(numbers + j) > *(numbers + j + 1))
           {
               SwapNumberValue(&(*(numbers + j)), &(*(numbers + j + 1)));
           }
        }
    }
}

void PrintNumbers(int* numbers, int* numberCounts)
{
    for (int i = 0; i < *numberCounts; i++) 
    {
       printf("%d ",*(numbers + i));
    }
}

int main()
{
    int length = 10;
    
    int numbers[length] = {6, 4, 3, 8, 7, 9, 1, 5, 0, 2};
    printf("排序前:\n");
    PrintNumbers(numbers, &length);
    
    printf("\n\n排序后:\n");
    BubbleSort(numbers, &length);
    PrintNumbers(numbers, &length);
    
    return 0;
}

写错了就说写错了

img