鱼C论坛

 找回密码
 立即注册
查看: 9796|回复: 24

[扩展阅读] 各种各这样的排序算法:鸡尾酒排序(*)

[复制链接]
发表于 2016-12-6 21:18:36 | 显示全部楼层 |阅读模式
购买主题 已有 12 人购买  本主题需向作者支付 10 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-6 22:29:59 | 显示全部楼层
滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-6 22:45:40 | 显示全部楼层
无标题.png
代码本身不区分Windows和linux吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-6 22:58:06 | 显示全部楼层
无标题.png
就这次而言,length = 14
right = length = 14
第一次for循环 i = 13时执行循环体
array[i + 1]
array[13 + 1]
array[14]
但是并没有 array[14]
因为length = 14

问题我也说了,代码你自己改吧
我有一个问题?你在linux下为什么是正确的?
难道是gcc的那个数组越界保护?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

发表于 2016-12-6 23:08:15 | 显示全部楼层
无标题.png
我不知道你是如何做到的
你不要告诉我是linux的版本不一样
之前的那个学习环境,我不小心弄没了,没办法在那试了(我没有必要在装一次了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-6 23:14:13 | 显示全部楼层
代码我也改好了
这样就行了吧?
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-12-7 02:35:36 | 显示全部楼层
人造人 发表于 2016-12-6 23:14
代码我也改好了
这样就行了吧?

确实是边界问题……大意了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-12-28 18:52:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

I love gcc



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-21 21:36:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-20 17:21:01 | 显示全部楼层
4.20掌握双向排序即鸡尾酒排序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-15 22:16:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-12 22:39:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 17:14:07 | 显示全部楼层
  1. # include<stdio.h>
  2. void croc(int array[],int length)
  3. {
  4.         int i,tem,left = 0,right = length - 1;
  5.         while(left < right)
  6.         {
  7.                         for(i = left; i < right;i++)
  8.                 {
  9.                         if(array[i] > array[i+1])
  10.                         {
  11.                                 tem = array[i];
  12.                                 array[i] = array[i+1];
  13.                                 array[i+1] = tem;
  14.                         }
  15.                 }
  16.                 right --;
  17.                 for(i = right;i > left; i --)
  18.                 {
  19.                         if (array[i] < array[i-1] )
  20.                         {
  21.                                 tem = array[i];
  22.                                 array[i] = array[i-1];
  23.                                 array[i-1] = tem;
  24.                         }
  25.                 }
  26.                 left ++;
  27.         }
  28. }
  29. int main(void)
  30. {
  31.         int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};
  32.         int i,legth;
  33.         legth = sizeof(array)/sizeof(array[0]);
  34.         croc(array,legth);
  35.         for(i = 0;i < legth;i ++)
  36.         {
  37.                 printf("%d ",array[i]);
  38.                
  39.         }
  40.         putchar('\n');
  41.         return 0;
  42. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 17:07:54 | 显示全部楼层
  1. #include <stdio.h>

  2. void buble(int a[],int len)
  3. {
  4.         int i,left = 0,right = len - 1,tem;
  5.         while(left < right)
  6.         {
  7.                 for(i = left;i < right;i ++)
  8.                 {
  9.                         if(a[i] > a[i + 1])
  10.                         {
  11.                                 tem = a[i];
  12.                                 a[i] = a[i +1];
  13.                                 a[i+1] = tem;
  14.                         }
  15.                 }
  16.                 right --;
  17.                 for(i = right ;i > left;i--)
  18.                 {
  19.                         if(a[i - 1] > a[i])
  20.                         {
  21.                                 tem = a[i];
  22.                                 a[i] = a[i-1];
  23.                                 a[i-1] =tem;
  24.                         }
  25.                 }
  26.                 left ++;
  27.                
  28.         }
  29. }
  30. int main()
  31. {
  32.         int a[] = {3,4,2,54,2,6,3,47,4,23,5,23,87,5,76,34,23,4,6745,23,54,98};
  33.         int len,i;
  34.         len = sizeof(a) / sizeof(a[0]);
  35.         buble(a,len);
  36.         for(i = 0;i < len;i++)
  37.         {
  38.                 printf("%d ",a[i]);
  39.         }
  40.         putchar('\n');

  41.         return 0;
  42. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-26 18:42:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-8 18:00:18 | 显示全部楼层
挺好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-5 20:03:07 | 显示全部楼层
来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-25 18:11:49 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-30 10:57:30 | 显示全部楼层
这个10鱼币是怎么解锁的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 02:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表