| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 254 人关注过本帖, 1 人收藏
标题:折半查找
取消只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
结帖率:94.64%
收藏(1)
已结贴  问题点数:20 回复次数:1 
折半查找
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10

// 插入排序(升序)
void insertion_sort(int * data, int begin, int end) {
    int i, j, k, temp;
    for(i = begin + 1; i <= end; i++) {
        for(j = 0; j < i; j++)
            if(data[j] > data[i])
                break;
        temp = data[i];
        for(k = i; k > j; k--)
            data[k] = data[k - 1];
        data[j] = temp;
    }
}

// 折半查找 ,找到该值则返回该值在数组中的索引,否则返回-1
int binary_search(const int * data, int value, int size) {
    int start = 0, stop = size - 1, middle = (start + stop) / 2;
    while(data[middle] != value && start < stop) {
        if(data[middle] > value)
            stop = middle - 1;
        else
            start = middle + 1;
        middle = (start + stop) / 2;
    }
    return data[middle] == value ? middle : -1;
}

int main(void) {
    int data[SIZE], i, index, value;
    // 数组中每个元素被置为随机数
    srand((unsigned)time(NULL));
    for(i = 0; i < SIZE; i++)
        data[i] = rand();
    insertion_sort(data, 0, SIZE - 1);
    // 输出已排序好的值
    for(i = 0; i < SIZE; i++)
        printf("%d ", data[i]);
    printf("\n");
    // 输入一个值,并查找它在数组中的索引
    scanf("%d", &value);
    index = binary_search(data, value, SIZE);
    printf("index : %d\n", index);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

跟据思路自己写的,但不知道对不对,请朋友们指教一下,Thanks!


[ 本帖最后由 lz1091914999 于 2011-6-13 12:33 编辑 ]
2011-06-13 10:58
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 2楼 voidx
呵呵,其实开始用的if不过为了代码短一点,又改了,现在改回来了。

My life is brilliant
2011-06-13 12:41
快速回复:折半查找
数据加载中...
 
   



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

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