模型:扑克牌
开始时,我们左手为空并且桌上的牌面向下。然后我们每次从桌上拿走一张牌并将它插入左手中正确的位置。
为了找到一张牌的正确位置,我们从右到左将它与已经在左手中的每张牌进行比较,拿在左手中的牌总是
排好序的,原来这些牌是桌上牌堆中顶部的牌
伪代码:
我们用缩进表示块结构。
当一个 for 循环每次迭代增加其循环次数时,我们使用关键词 to,反之则用 downto。
当循环计数器以大于 1 的一个量改变时,该该变量跟在可选关键词 by 之后。
复合数据通常被组织成对象,对象又由属性组成。我们使用许多面向对象编程语言中创建的句法来
访问特定的属性:对象名后跟一个点再跟属性名。
有时一个指针根本不指向任何对象。这时,我们赋给它特殊值 NIL。
//INSERTION-SORT(A) for j=2 to A.length key=A[j] // Insert A[j] into the sorted sequence A[1..j-1]. i=j-1 while i>0 and A[i]>key A[i+1]=A[i] i=i-1 A[i+1]=key
例代码(升序):
#include<stdio.h> int *insert(int num[],int n); int main(void) { int i,*p,a[]={5,2,4,6,1,3}; int x=sizeof(a)/sizeof(a[0]); p=insert(a,x); for(i=0;i<x;i++) { printf("%2d",*(p+i)); } printf("\n"); return 0; } int *insert(int num[],int n) { int i,j,key; for(j=1;j<n;j++) { key=num[j]; i=j-1; while(i>=0 && num[i]>key) { num[i+1]=num[i]; i--; } num[i+1]=key; } return num; }