| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1069 人关注过本帖
标题:书看完,能看懂了,不过写还差点,这不,碰到个题,现在明白了,发个贴子庆 ...
只看楼主 加入收藏
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
收藏
得分:0 
这是我用c++写的,主要函数基本一样,大家可以参考一下

#include<iostream.h>
class HalfFind {
public:
    HalfFind(int *a, int n);
    ~HalfFind();
    int arraySort(int *a, int n);
    int halfFind(int *a, int x1, int n);
    void show();
private:
    int *array;
    //int x;
};

HalfFind::HalfFind(int *a, int n)
{
    array = new int[n];
    for(int i=0; i<n; i++)
        array[i] = a[i];
}

HalfFind::~HalfFind()
{
    delete []array;
}

int HalfFind::arraySort(int *a, int n)    // 对数组进行排序
{
    int i, j;
    for(i=0; i<n; i++)
    {
        for(j=i+1; j<n; j++)
        {
            int temp;
            if(a[i] > a[j])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
        array[i] = a[i];
        //cout << array[i] << " ";
    }
    return a[i];
}

int HalfFind::halfFind(int *a, int x1, int n)  // 用折半查找
{
    int low, hight, mid;
    int flag;
    low = 1;
    hight = n;
    flag = 0;
    while (low <= hight)
    {
        mid = (low + hight) / 2;
        if (x1 < a[mid])             // 插入应在左区间
            hight = mid - 1;
        else if(x1 > a[mid])
            low = mid + 1;           // 插入应在右区间
        else
        {
            flag = mid;
            break;
        }
   
    }
    return flag;
}

void HalfFind::show()
{
    int i;
    for(i=0; i<15; i++)
    {
        cout << array[i] << " ";
    }
}


void main()
{   
    int i;
    int ob[15] = {1,3,5,8,7,4,2,6,10,11,12,13,9,15,14};
    HalfFind obj(ob, 15);
    cout << "输出的数组是:" << endl;
    obj.show();
    cout << endl;
    cout << "由小到大排序:" << endl;
    obj.arraySort(ob, 15);
    obj.show();
    cout << endl;
    i = obj.halfFind(ob, 13, 15);
    if (i == 0)
        cout << "找不到";
    else
        cout << "所要找的元素的位置:" << i << endl;
}
2011-10-17 23:30
Begin2011
Rank: 2
等 级:论坛游民
帖 子:60
专家分:61
注 册:2011-6-7
收藏
得分:0 
LZ犀利,我也是看的这本书,但是自己做不出来
2011-10-18 09:49
快速回复:书看完,能看懂了,不过写还差点,这不,碰到个题,现在明白了,发个贴 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035183 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved