注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

浩瀚星云

上善若水 厚德载物<学习版>

 
 
 

日志

 
 

设计一个算法从顺序表中删除重复的元素,并使剩下元素间的相对次序保持不变。要求时间复杂度不大于O(n2),不增加额外存储空间。  

2014-10-17 08:46:22|  分类: 算法设计与分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#include <stdio.h>
#include <string.h>

int DeleSame(int *head,int n)  
{
int i,j=0,k;
for(i=1;i<n;i++)
        {
     k=0;
     while((k<=j)&&(head[i]!=head[k]))
     {
                      k++;
     }
     if(k>j)
     {
                      j++;
                      head[j]=head[i];
     }
}
n=j+1;
return n;
}
main()
{
       int i,n,len=0;
       int a[100];
       printf("输入n(小于100)");
       scanf("%d",&n);
       for(i=0;i<n;i++)
       {
             scanf("%d",&a[i]);
       }
       printf("您输入的顺序表是:[");
       for(i=0;i<n;i++)
       {
             printf(" %d ",a[i]);
       }
       printf(" ]\n删除操作后的结果是:[ ");
       len=DeleSame(a,n);
       for(i=0;i<len;i++)
       {
             printf(" %d ",a[i]);
       }
       printf(" ] \n");
}
设计一个算法从顺序表中删除重复的元素,并使剩下元素间的相对次序保持不变。要求时间复杂度不大于O(n2),不增加额外存储空间。 - brain - 百年孤独
 
算法解析:
(1)、i 控制待处理区域,j  控制无重复区域。
(2)、k 用于遍历无重复区域与 i 中的元素进行对比,若没有重复就将当前 i 所指单元加入 j 控制的无重复区域中,无重复区域长度+1。

设计一个算法从顺序表中删除重复的元素,并使剩下元素间的相对次序保持不变。要求时间复杂度不大于O(n2),不增加额外存储空间。 - brain - 百年孤独
 
  评论这张
 
阅读(871)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017