C语言——插入排序

先将序列的第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[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函数动态开辟内存空间,最后记得要释放。

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

结果

相关推荐
Cher ~几秒前
【数据结构】hash表(unordered_map)
java·数据结构·c++·算法·哈希算法
一起养小猫1 分钟前
Flutter for OpenHarmony 实战:食物生成算法与难度递增系统
算法·flutter
zfj3217 分钟前
好书分享:《两周自制脚本语言》-用java实现一个脚本语言
java·开发语言·python·编译原理
u0109272719 分钟前
自定义类型转换机制
开发语言·c++·算法
hetao17338379 分钟前
2026-01-27 hetao1733837 的刷题笔记
c++·笔记·算法
爱吃生蚝的于勒11 分钟前
【Linux】进程信号的产生(一)
linux·运维·服务器·c语言·开发语言·数据结构·c++
写代码的【黑咖啡】16 分钟前
Python中Excel文件的强大处理工具:OpenPyXL
开发语言·python·excel
索荣荣20 分钟前
Java反射:从入门到实战的终极指南
java·开发语言
全栈软件开发20 分钟前
php图形验证码生成系统源码 支持api接口调用 提供SDK 轻量级简单易用
开发语言·php
Tisfy22 分钟前
LeetCode 3650.边反转的最小路径总成本:Dijkstra算法
算法·leetcode··dijkstra·题解·迪杰斯特拉