| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3232 人关注过本帖
标题:什么是折半排序法?
只看楼主 加入收藏
wpfengqi
Rank: 1
等 级:新手上路
帖 子:23
专家分:7
注 册:2011-10-18
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:7 
什么是折半排序法?
输入10个数,逆序输出(折半)。
求详解,百度上都是折半查找法
搜索更多相关主题的帖子: 百度 
2011-10-19 15:12
糖傻猫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:142
注 册:2011-8-9
收藏
得分:0 
折半排序法、也就是二分排序法。
2011-10-19 20:15
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
快速排序  时间复杂度O(nlogn)

                                         
===========深入<----------------->浅出============
2011-10-19 20:32
wpfengqi
Rank: 1
等 级:新手上路
帖 子:23
专家分:7
注 册:2011-10-18
收藏
得分:0 
具体点额
2011-10-19 21:15
jj7412530
Rank: 2
等 级:论坛游民
帖 子:19
专家分:40
注 册:2011-9-20
收藏
得分:0 
折半也叫二分.....具体的就是在数组中查找一个数。其查找的前提条件是数组的值按照从大到小或者从小到大排列
比如a[10]={1,2,3,4,5,6,7,8,9,10}中查找a
令begin=0,end=9,mid=(begin+end)/2
if(a[mid]>a) end=mid;
else if(a[mid]<a) begin=mid;
就这样循环知道找到或者退出为止
2011-10-19 23:35
吴军旗
Rank: 5Rank: 5
等 级:职业侠客
帖 子:286
专家分:308
注 册:2011-9-14
收藏
得分:5 
程序代码:
#include < stdio.h >
#include < stdlib.h >
#define N 15
void main ( )
{
    int i, number, top, bott, mid, loca, a[N], flag = 1, sign;
    char c;
    printf ( "enter data:\n" );
    scanf ( "%d", &a[0] );
    i = 1;
    while ( i < N )
    {
        scanf ( "%d", &a[i] );
        if ( a[i] >= a[i - 1])
            i++;
        else
            printf ( "enter this data again:\n" );
    }
    printf ( "\n" );
    for ( i = 0;i < N; i++ )
        printf ( "%d", a[i] );
    printf ( "\n" );
    while ( flag )
    {
        printf ( "input number to look for : ");
        scanf ( "%d", &number );
        sign = 0;
        top = 0;
        bott = N - 1;
        if (  ( number < a[0]) || ( number > a[N-1]) )
            loca = -1;
        while ( ( !sign ) && ( top <= bott ) )
        {
            mid = ( bott + top )/2;
            if ( number == a[mid] )
            {
                loca = mid;
                printf ( "Has found %d ,its position is %d\n", number, loca + 1 );
                sign = 1;
            }
            else if ( number < a[mid] )
                bott = mid -1;
            else
                top = mid + 1;
        }
        if ( !sign ||loca == -1 )
            printf ( "can not find %d.\n",number );
        printf ( "continue or not ( Y/N )?" );
        scanf ( "%c",&c );
        if ( c == 'N' || c == 'n' )
            flag = 0;
    }
    system ( "pause" );
}
这是个找到一个和已知数组相同的程序,用的正是,折半排序法,前两天写的一个程序,给你看看

最惨的不是忘不了悲伤的回忆,而是那些悲伤的回忆却开始记不清。。。
2011-10-19 23:46
wpfengqi
Rank: 1
等 级:新手上路
帖 子:23
专家分:7
注 册:2011-10-18
收藏
得分:0 
好复杂。。我水平不够。。还是谢谢你了,我先参悟下
2011-10-20 13:48
Superstone
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-7-21
收藏
得分:0 
回复 6楼 吴军旗
你这个是折半查找吧
2016-08-09 09:12
快速回复:什么是折半排序法?
数据加载中...
 
   



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

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