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

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

结果

相关推荐
无限进步_几秒前
面试题 02.02. 返回倒数第 k 个节点 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
想进个大厂5 分钟前
代码随想录day32 动态规划01
算法·动态规划
布谷歌9 分钟前
面试题整理
java·开发语言
j4455661118 分钟前
C++中的职责链模式高级应用
开发语言·c++·算法
Hello World . .20 分钟前
数据结构:栈和队列
c语言·开发语言·数据结构·vim
uesowys21 分钟前
Apache Spark算法开发指导-Decision tree classifier
算法·决策树·spark
jjjava2.025 分钟前
深入解析Set与Map的奥秘
java·开发语言
池央29 分钟前
贪心算法-最大数
算法·贪心算法
白宇横流学长30 分钟前
基于Java的火车票订票系统的设计与开发
java·开发语言
黎雁·泠崖30 分钟前
Java核心基础API学习总结:从Object到包装类的核心知识体系
java·开发语言·学习