代码拉取完成,页面将自动刷新
#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;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。