小甲鱼 发表于 2016-12-6 21:18:36

已有 12 人购买  本主题需向作者支付 10 鱼币 才能浏览 购买主题

Mr.HO 发表于 2016-12-6 22:29:59

滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答答

人造人 发表于 2016-12-6 22:45:40


代码本身不区分Windows和linux吧

人造人 发表于 2016-12-6 22:58:06


就这次而言,length = 14
right = length = 14
第一次for循环 i = 13时执行循环体
array
array
array
但是并没有 array
因为length = 14

问题我也说了,代码你自己改吧
我有一个问题?你在linux下为什么是正确的?
难道是gcc的那个数组越界保护?

人造人 发表于 2016-12-6 23:08:15


我不知道你是如何做到的
你不要告诉我是linux的版本不一样
之前的那个学习环境,我不小心弄没了,没办法在那试了(我没有必要在装一次了)

人造人 发表于 2016-12-6 23:14:13

代码我也改好了
这样就行了吧?

小甲鱼 发表于 2016-12-7 02:35:36

人造人 发表于 2016-12-6 23:14
代码我也改好了
这样就行了吧?

确实是边界问题……大意了……

流月飞星 发表于 2016-12-28 18:52:22

{:10_266:}

铭记太阳 发表于 2017-4-23 16:57:10

鸡尾酒算法其实很好,在保证对新手足够友好的情况下比冒泡快。
其中关于小甲鱼和人造人争论的问题我也试过了。
第一版的length=14确实是会出现array越界了,我测试了三个版本,win上的VS报错了,但是mac osx 上的终端的vim/gcc没报错正常运行,CentOS也正常运行,我猜测可能是高版本的gcc有某些越界保护的措施。

{:10_281:}{:10_281:}{:10_281:}I love gcc



remakejobs 发表于 2018-1-21 21:36:24

{:10_261:}

土鸡蛋爱学习 发表于 2019-4-20 17:21:01

4.20掌握双向排序即鸡尾酒排序

Shangxiang 发表于 2019-12-15 22:16:44

{:10_256:}

Acacia 发表于 2020-2-12 22:39:56

{:10_250:}

Draem 发表于 2020-3-27 17:14:07

# include<stdio.h>
void croc(int array[],int length)
{
        int i,tem,left = 0,right = length - 1;
        while(left < right)
        {
                        for(i = left; i < right;i++)
                {
                        if(array > array)
                        {
                                tem = array;
                                array = array;
                                array = tem;
                        }
                }
                right --;
                for(i = right;i > left; i --)
                {
                        if (array < array )
                        {
                                tem = array;
                                array = array;
                                array = tem;
                        }
                }
                left ++;
        }
}
int main(void)
{
        int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};
        int i,legth;
        legth = sizeof(array)/sizeof(array);
        croc(array,legth);
        for(i = 0;i < legth;i ++)
        {
                printf("%d ",array);
               
        }
        putchar('\n');
        return 0;
}

Draem 发表于 2020-3-31 17:07:54

#include <stdio.h>

void buble(int a[],int len)
{
        int i,left = 0,right = len - 1,tem;
        while(left < right)
        {
                for(i = left;i < right;i ++)
                {
                        if(a > a)
                        {
                                tem = a;
                                a = a;
                                a = tem;
                        }
                }
                right --;
                for(i = right ;i > left;i--)
                {
                        if(a > a)
                        {
                                tem = a;
                                a = a;
                                a =tem;
                        }
                }
                left ++;
               
        }
}
int main()
{
        int a[] = {3,4,2,54,2,6,3,47,4,23,5,23,87,5,76,34,23,4,6745,23,54,98};
        int len,i;
        len = sizeof(a) / sizeof(a);
        buble(a,len);
        for(i = 0;i < len;i++)
        {
                printf("%d ",a);
        }
      putchar('\n');

      return 0;
}

Anderson_Cooper 发表于 2021-2-26 18:42:28

{:10_277:}

闲听花落 发表于 2021-7-8 18:00:18

挺好

采茝. 发表于 2021-8-5 20:03:07

来了

波拉 发表于 2021-8-25 18:11:49

1

白给网友 发表于 2021-8-30 10:57:30

这个10鱼币是怎么解锁的
页: [1] 2
查看完整版本: 各种各这样的排序算法:鸡尾酒排序(*)