| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4500 人关注过本帖, 1 人收藏
标题:【最终修改版】冒泡排序
只看楼主 加入收藏
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 20楼 九转星河
为啥我一次都没奔溃。

你把后缀改成.c。

貌似有个地方越界了

[此贴子已经被作者于2018-5-25 15:42编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2018-05-25 15:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 21楼 renkejun1942
后缀.c我那个vc过不了编译,难道c和cpp的结果是有区别的么?~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-25 15:43
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 22楼 九转星河
.c和.cpp有很大区别呀。

但是我程序的崩溃应该不是这个问题,有行代码越界了。

奇怪,中午我用dec竟然没崩溃,我平板也没。

唯一的解释是中午测试没遇到逆序的序列。

[此贴子已经被作者于2018-5-25 15:50编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2018-05-25 15:46
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
交换次数为0
2018-05-25 19:07
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 24楼 dzy123
计数器错误。这BUG我要研究下。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2018-05-25 19:16
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 24楼 dzy123
奇怪了,在我这里是正确。

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

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2018-05-25 19:18
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
收藏
得分:0 
那是怎么回事?
2018-05-25 19:20
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 27楼 dzy123
这问题。

你有修改过我的代码吗?

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2018-05-25 19:21
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
typedef int E_T;

void sort( E_T *array, int l, int r );

int main( void )
{
    E_T a[ 10 ];
    srand( ( unsigned long )time( NULL ) );
    
    for( int i = 9; i >=0; i-- )
    {
        a[ i ] = i;//只改了这儿赋值。
        printf( "%d ",a[ i ] );
    }
    printf( "\n" );
    sort( a, 0, 10 );
    for( int i = 0; i < 10; ++i )
        printf( "%d ", a[ i ] );
     printf( "\n" );
     printf( "\n" );
     printf( "\n" );
    return 0;
}


void sort( E_T *array, int l, int r )
{
    int minix, maxix;
    int R;
    int c;
  //  int f;
    int s;
    
    s = 0;
    
    if( l >= r )
        return;
    
    
    for( int ix = l; ix < r -1; ix++ )
    {
        if( array[ ix ] <= array[ ix + 1 ] )
        {
            s++;
            if( s <= 0 )
                break;
        }
        else if( array[ ix ] > array[ix + 1 ] )
        {
            s--;
            if( s >= 0 )
                break;
        }
        else
            break;
    }
    
    c=0;
    
    if( s == r - l - 1 )
    {
         printf("jiao huan %d ci\n",c);
        return;
    }
    else if( s == l - r + 1)
    {
        for(r -= 1 ; l < r; l++,r-- )
        {
            c++;
            E_T temp = array[ l ];
            array[ l ] = array[ r ];
            array[ r ] = temp;
        }
    }
    else
    {
        for( ; l < r; ++l, --r )
        {
           //  f = 0;
            for( minix = l + 1, maxix = r - 2, R = r - 1; minix <= R; ++minix, --maxix )
            {
                if( array[ l ] > array[ minix ] )
                {
                    c++;
                  //  f++;
                    E_T temp = array[ l ];
                    array[ l ] = array[ minix ];
                    array[ minix ] = temp;
                }
                if( array[ R ] < array[ maxix ] )
                {
                    c++;
                   // f++;
                    E_T temp = array[ R ];
                    array[ R ] = array[ maxix ];
                    array[ maxix ] = temp;
                }
            }
            
           /* if( f == 0 )
                sort( array, l + 1, r - 1 );*/
        }
    }
    
    printf("jiao huan %d ci\n",c);
    
}
2018-05-25 19:24
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 29楼 dzy123
找到错误源了。你复制了我没修改的代码。
原来的代码里有一个地方越界了。

你重新复制我住楼的代码再试一次,bug应该就消除了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2018-05-25 19:27
快速回复:【最终修改版】冒泡排序
数据加载中...
 
   



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

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