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

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

结果

相关推荐
资深web全栈开发16 小时前
LeetCode 3578:统计极差最大为 K 的分割方式数 - 深入浅出指南
算法·leetcode·前缀和·动态规划·滑动窗口
进击的荆棘16 小时前
C++起始之路——类和对象(上)
开发语言·c++
不会c嘎嘎16 小时前
算法百练 ,直击OFFER -- DAY7
算法
老朱佩琪!16 小时前
在Unity中实现状态机设计模式
开发语言·unity·设计模式
FuckPatience16 小时前
C# BinarySearch 的返回值
开发语言·数据结构·c#
代码雕刻家16 小时前
1.8.课设实验-数据结构-哈夫曼树的建立与应用
c语言·数据结构
尼古拉斯·纯情暖男·天真·阿玮16 小时前
[JavaEE初阶] 进程和线程的区别和联系
java·开发语言
浅川.2516 小时前
xtuoj 不定方程的正整数解
算法
dog25016 小时前
让算法去学习,而不是去启发
学习·算法
草莓熊Lotso16 小时前
《算法闯关指南:动态规划算法--斐波拉契数列模型》--04.解码方法
c++·人工智能·算法·动态规划