《算法导论》(第二章)算法入门

  看到第二章的标题,有点激动,终于可以开始学习算法了,第一个算法,插入排序。

  输入要求:随机输入N个(a,b,c,d,e......)数。

  输出要求:输出这N个数的一个重新排序(要求:(a<=b<=c<=d<=e......)或(a>=b>=c>=d>=e......))

  算法代码如下(C语言版)

#include<stdio.h>
#define Max 100 //定义排序的数的个数.
int n;
int a[Max];//将要排序的数组,以及排序的个数定义为全局变量.
int main()
{
 int i;
 void InsertSort(int [],int n);//插入排序算法的声明.
 while(scanf("%d",&n)==1)
 {
  if(n>100)
  {
   printf("The N is too big !\n");
   continue;
  }//超过最大个数跳过,继续下一次进程.
  for(i=0;i<n;i++)
  {
   scanf("%d",&a[i]);
  }
  InsertSort(a,n);
  for(i=0;i<n;i++)
  {
   printf("%d ",a[i]);
  }
  printf("\n");
 }
 return 0;
}
  /* 插入排序算法的核心 */
void InsertSort(int b[],int n)
{
 int i,j,key;
 for(i=1;i<n;i++)
 {
  key=b[i];//当前未插入进去的数.
  j=i-1;
  while(key<b[j]&&j>=0)
  {
   b[j+1]=b[j];
   j--;
  }
  b[j+1]=key;//将此数插入到相应的位置.
 }
}

  这是《算法导论》中的第一个算法,应该好好注意,毕竟,只有把基础知识学好才会在以后的学习中更加得心应手!

                                                                                                                                                                                                    (坚持)

                                                                        Never Give Up !

 

 

posted @ 2013-05-15 18:30  dreamapple  阅读(156)  评论(0编辑  收藏  举报