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