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

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

结果

相关推荐
小峰编程几秒前
Python数据类型进阶——详解
linux·运维·服务器·开发语言·python·pycharm·swift
m0_466923802 分钟前
【java】字符串存储的内存原理
java·开发语言
葵野寺4 分钟前
【Java--数据结构】优先级队列( PriorityQueue)
数据结构
Rverdoser19 分钟前
conda创建Python虚拟环境的原理
开发语言·python·conda
*TQK*22 分钟前
双指针算法介绍+算法练习(2025)
c++·学习·算法·双指针
陈果然DeepVersion24 分钟前
算法奈我何(二)冒泡排序
算法
我没想到原来他们都是一堆坏人27 分钟前
idea中lombok插件的安装与使用
java·开发语言
郭涤生30 分钟前
并行算法_第十章_《C++并发编程实战》笔记
c++·算法·并发编程
SomeB1oody37 分钟前
【Python机器学习】2.2. 聚类分析算法理论:K均值聚类(KMeans Analysis)、KNN(K近邻分类)、均值漂移聚类(MeanShift)
python·算法·机器学习·聚类·分类算法
Cindy辛蒂1 小时前
C语言:计算并输出三个整数的最大值 并对三个数排序
c语言·数据结构·算法