C语言——插入排序

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
#include <stdio.h>
#include <stdlib.h>
void insertion_sort(int *arr, int n)
{
    for (int i = 1; i < n; i++)
    {
        int key = arr;
        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);
    }
}
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函数动态开辟内存空间,末了记得要释放。
自定义了两个函数模块,一个是插入排序函数,一个是打印函数
结果


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表