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

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

结果

相关推荐
奥地利落榜美术生灬5 分钟前
c++ 锁相关(mutex 等)
开发语言·c++
xixihaha132411 分钟前
C++与FPGA协同设计
开发语言·c++·算法
重庆小透明16 分钟前
【java基础篇】详解BigDecimal
java·开发语言
ID_1800790547321 分钟前
模拟1688商品详情的Python API实现,返回符合风格的JSON数据
开发语言·python·json
小小怪75038 分钟前
C++中的函数式编程
开发语言·c++·算法
金山几座40 分钟前
C#学习记录-事件
开发语言·学习·c#
xixixiLucky1 小时前
编程入门算法题---小明爬楼梯求爬n层台阶一共多少种方法
算法
剑锋所指,所向披靡!1 小时前
数据结构之线性表
数据结构·算法
小杍随笔1 小时前
【Rust 语言编程知识与应用:基础数据类型详解】
开发语言·后端·rust
Yupureki1 小时前
《MySQL数据库基础》1. 数据库基础
c语言·开发语言·数据库·c++·mysql·oracle·github