|
|
最近看《算法导论》,它对一些算法提供了伪代码,我就想用c/c++把它实现出来。
插入排序的伪码:
insertion_sort(A)for j <--2 to length[A] do key <-- A[j] //insert A[j] into the sorted sequence A[1..j-1] i <-- j-1 while i>0 and A[i]>key do A[i+1] <-- A[i] i <-- i-1 A[i+1] <-- key 我感觉这种伪代码对于算法的描述能力非常强,不过需要读懂上面那段伪码,还需要去查看《算法导论》中伪代码中的一些符号约定。
我自己照猫画虎用c写了个int型的插入排序算法。
#include <stdio.h>bool insertion_sort(int a[],int len){int j;int i;int key; for(j=1;j<len;j++){key=a[j];i=j-1;while(i>=0 && a[i]>key){a[i+1]=a[i];i=i-1;}a[i+1]=key;}return true;}int main(void){int a[]={5,2,2,2,4,3,8,1,3};int i;int len;len=sizeof(a)/sizeof(a[0]); //计算数组的个数insertion_sort(a,len);for(i=0;i<len;i++){printf("%d\n",a[i]);}return 0;} 以上只是简单的对int型进行排序,还打算用c++的模板写一个泛型的插入算法。到时候写好以后再发上来。 |
|