编辑代码

#include <stdio.h>
//性质:
// 1、时间复杂度:O(n2) 
// 2、空间复杂度:O(1)
// 3、稳定排序
// 4、原地排序
void print(int (*arr)[], int length);
void insert_sort(int * arr, int length);

int main () {
    
    int arr[] = {9, 4, 5, 2, 6, 3, 2, 4, 1};

    int length = sizeof(arr) / sizeof(*arr);
    print(&arr, length);

    printf("\r\n");

    insert_sort(arr, length);
    print(&arr, length);

    return 0;
}  

void print(int (*arr)[], int length){
    for(int i = 0; i < length; i++){
        printf("%d ", *((*arr) + i));
    }

}
void insert_sort(int * arr, int length){
    for(int i = 1; i < length; i++){
        int temp = *(arr + i);
        int k = i - 1;
        while(k >= 0 && *(arr + k) < temp){
            k--;
        }
        for(int j = i; j > k ; j--){
            *(arr + j) = *(arr + (j-1));
        }
        *(arr + (k + 1 )) = temp;
    }
}