#include <stdio.h>

// 冒泡排序：通过指针操作数组
void bubbleSort(int *arr, int len) {
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len - 1 - i; j++) {
            // 通过指针访问相邻元素并交换
            if (*(arr + j) > *(arr + j + 1)) {
                int temp = *(arr + j);
                *(arr + j) = *(arr + j + 1);
                *(arr + j + 1) = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 2, 8, 1, 9, 3};
    int len = sizeof(arr) / sizeof(arr[0]);
    int *p = arr;

    printf("排序前数组：");
    for (int i = 0; i < len; i++) {
        printf("%d ", *(p + i));
    }

    // 调用排序函数，传递数组首地址和长度
    bubbleSort(p, len);

    printf("\n排序后数组：");
    for (int i = 0; i < len; i++) {
        printf("%d ", *(p + i));
    }
    printf("\n");

    return 0;
}
