基于C#的算法导论中的算法实现(一)

 这段时间刚好有闲暇,想学习一点基础跟算法相关的东西(活络一下脑筋),教材一定要经典,之前随便从单位图书馆借了一本机械工业出版社出版的《算法设计与分析》,说是计算机专业规划教材,看完前40页,书的专业程度暂且不说,毕竟刚开始看。但是书里的错误却实在太多,错别字甚至连基本的公式都出现错误,这严重影响学习进程,学习还要纠错,不要太痛苦,于是果断弃之。然后便找到了,《算法导论》,这本书某东上102,略贵,所以从网上找了本电子版爱戴习题答案,现在将就用着。为了巩固学习效果,想把输出给出伪代码的算法实现之后贴到这,做个备份,有需要的人也可以各取所需。

排序算法之插值排序算法(升序)

void InsertionSortUp(int [] SortArrary)
{
    int i=0,l=0,key=0;
    for(j=1;j<SortArray.Length;j++)
    {
      key=SortArrary[j];
      i=j-1;
      while(key<SortArray[i]&&i>=0)
     {
       SortArrary[i+1]=SortArray[i];
       i--;
     }
       SortArrary[i+1]=key;
    }
}

合并排序算法

数组合并
void Merge(int[] SortArrary,int p,intq,int r)
{
  int n1=q-p+1;
  int n2=r-q;
  int i,j;
  int [] L=new int[n1+1],R=new int [n2+1];
  for(i=0;i<n1;i++)
    L[i]=SortArrary[p+i];
  for(j=0;j<n2;j++)
    R[j]=SortArrary[q+i+1];
  L[n1]=1000000;
  L[n2]=1000000;
  i=0;j=0;
  for(int k=p;k<=r;k++)
  {
    if(L[i]<=R[j])
    {
      SortArrary[k]=L[i];
      i++;
    }
    else
   { 
      SortArrary[k]=R[j];
      j++;
    }
  }
}
合并分组算法之分组
void Merge_sort(int [] SortArrary,int p,int r)
{  
  int q=0;
  if(p<r)
  {
    q=(p+r)/2;
    Merge_sort(SortArrary,p,q);
    Merge_sort(SortArrary,q+1,r);
    Merge(SortArrary,p,q,r);
   }
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值