Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1698382
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: C/C++

2010-08-03 09:17:06

实现过程:从0开始扫描线性表,用k记录值在x和y之间的元素个数,如果不满足条件,则执行移动元素操作data[i-k]=data[i],最后修改线性表长度len=i-k,时间复杂度为o(n).
线性表实现:
 


const int MAX(30);
typedef struct SList{
    int data[MAX];
    int len;
}SList;



void move(SList &L){
    int i = 0;
    int j = L.len;
    while(i<j){
        while(i<j&&L.data[i]>10)i++;
        while(i<j&&L.data[j]<10)j--;
        if(i<j){
            int temp = L.data[i];
            L.data[i] = L.data[j];
            L.data[j] = temp;
        }
    }
}


阅读(3247) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-09 09:53:53

排序也没写完整啊,那个删除某种条件的重复元素那样做比较好,不是每次都要移动元素

chinaunix网友2010-08-09 09:52:38

这是排序啊