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函数动态开辟内存空间,最后记得要释放。

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

结果

相关推荐
努力长头发的程序猿20 小时前
Unity2D当中的A*寻路算法
算法·unity·c#
Raink老师21 小时前
用100道题拿下你的算法面试(矩阵篇-2):求转置矩阵
算法·面试·矩阵
zhangjw341 天前
Java基础语法:变量、数据类型与运算符,从原理到实战
java·开发语言
算法鑫探1 天前
闰年判断:C语言实战解析
c语言·数据结构·算法·新人首发
yaoxin5211231 天前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
java·开发语言·python
WBluuue1 天前
数据结构与算法:康托展开、约瑟夫环、完美洗牌
c++·算法
NotFound4861 天前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
木子墨5161 天前
LeetCode 热题 100 精讲 | 并查集篇:最长连续序列 · 岛屿数量 · 省份数量 · 冗余连接 · 等式方程的可满足性
数据结构·c++·算法·leetcode
浅时光_c1 天前
14 结构体 共用体 枚举类型
c语言
Ava的硅谷新视界1 天前
用了一天 Claude Opus 4.7,聊几点真实感受
开发语言·后端·编程