1 Star 0 Fork 0

saiumr/AlgorithmAnalysisDesign

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
insertionSortRecursive.c 1.05 KB
一键复制 编辑 原始数据 按行查看 历史
saiumr 提交于 2020-04-20 13:26 +08:00 . dp homework
#include <stdio.h>
/**
* 预先理解:把前i个当成排好序的,后面当成没有排好序的,把没排好序的一个个插到排好序的序列中
* 插入排序关键点:
* 理解:就像打扑克牌你抓到一张牌为他找合适的位置一样
* 在程序中实现,用key保存要插入排序的值,在循环中不断腾位置直到循环结束
* 最后把key放到找到的确切位置
*/
//插好一个元素(n代表元素位置)
void insertion(int arr[], int n) {
int key = arr[n];
int i = n;
while (i > 0 && arr[i - 1] > key) {
arr[i] = arr[i - 1]; //不断向后copy腾位置
--i;
}
arr[i] = key;
}
//插入排序(从前到后一个个向前插入)
int insertionSort(int arr[], int n) {
if (n > 1) {
insertionSort(arr, n-1);
insertion(arr, n);
}
else {
return 0;
}
}
void print(int arr[], int n) {
int i;
for (i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[5] = {6, 3, 15, 4, 8};
printf("Before: ");
print(arr, 5);
insertionSort(arr, 4);
printf("After: ");
print(arr, 5);
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/saiumr/AlgorithmAnalysisDesign.git
git@gitee.com:saiumr/AlgorithmAnalysisDesign.git
saiumr
AlgorithmAnalysisDesign
AlgorithmAnalysisDesign
master

搜索帮助