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

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

结果

相关推荐
追光的蜗牛丿几秒前
C++传递参数时什么情况下传递引用
开发语言·javascript·c++
Pocker_Spades_A1 分钟前
Python快速入门专业版(五十六)——爬虫会话管理:Cookie与Session原理及实战(保持登录状态)
开发语言·爬虫·python
MwEUwQ3Gx2 分钟前
深入理解 Java Deque 的设计哲学
java·开发语言·python
张人玉2 分钟前
C#程序设计编程二维码识别程序
开发语言·c#·二维码
人间寥寥情难诉5 分钟前
LRU算法本地实现
java·算法·spring
吴声子夜歌6 分钟前
Node.js——dns模块
开发语言·node.js·php
moonsea02037 分钟前
2026.4.2
开发语言·c++·算法
Zzj_tju13 分钟前
Java 从入门到精通(十一):异常处理与自定义异常,程序报错时到底该怎么处理?
java·开发语言
sR916Mecz13 分钟前
JavaParser使用指南
开发语言·c#
cpp_250114 分钟前
P10376 [GESP202403 六级] 游戏
c++·算法·动态规划·题解·洛谷·gesp六级