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]; //i+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动图来源: @五分钟学算法---侵权必删---
标签:arr,temp,int,比数,插入法,---,算法,细心,排序 来源: https://www.cnblogs.com/bi-hu/p/13299788.html