C程序数组算法 — 插入法排序(细心看)
#include<stdio.h> int main() { int arr[10] = {1,3,5,7,9,2,4,6,8,10}; //随便打的 int i,j,temp; // i j 是引用下标的 temp 是用来表示不变的"比数" for(i = 0;i<10;i++) // 从第二个元素开始比 到最后(9)一个元素 { temp = arr[i]; //temp 是用来表示不变的"比数" temp发挥关键 for(j = i - 1;j >= 0 && temp < arr[ j ];j--) //i-1 表示 会变的被比数 j >= 0表示不让下标越界 { arr[j+1] = arr[j]; //j+1 不能 换成 i 自己思考!!! 因为 i+1表示temp此时的下标(改变过的) arr[j] = temp; //替换... } } for(i = 0;i<10;i++) //排好了打印 { printf("%d\n",arr[i]); } return 0; }
上面是代码 细心看注释 跟着逻辑走 : 要注意 temp 是干什么的 还有替换那里 j+1 为什么不能换成 i
其实temp就比如下图每次要和别人比较的数 "j+1" 就如下图每次 temp 的位置。
细心看代码 和代码注释 , 写法很多种 ,这个是之一。 smile^—^
GIF动图来源: @五分钟学算法---侵权必删---
本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/13299788.html