C语言——插入排序

先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

#include
#include
void insertion_sort(int *arr, int n)
{
    for (int i = 1; i < n; i++)
    {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && key < arr[j])
        {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}
void print_arry(int *arr,int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
}
int main()
{
    int n;
    scanf_s("%d", &n);
    int *arr = (int *)malloc(sizeof(int) * n);
    if (arr == NULL)
    {
        return 1;
    }
    else
    {
        for (int i=0; i < n; i++)
        {
            scanf_s("%d", arr + i);
        }
        insertion_sort(arr, n);
        print_arry(arr, n);
    }
    free(arr);
    return 0;
}

使用了malloc函数动态开辟内存空间,最后记得要释放。

自定义了两个函数模块,一个是插入排序函数,一个是打印函数

结果

C语言——插入排序_第1张图片

你可能感兴趣的:(c语言,数据结构,开发语言,visualstudio,排序算法,算法)