是我理解冒泡排序错误了吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
HackerJax
V2EX    程序员

是我理解冒泡排序错误了吗?

  • /li>  
  •   HackerJax 2024-08-28 09:28:31 +08:00 3643 次点击
    这是一个创建于 457 天前的主题,其中的信息可能已经有所发展或是发生改变。

    维基百科原文:

    冒泡排序(英语:Bubble Sort )又称为泡式排序,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

    注意这句话这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,实际上很多例子是重复比较第 0 到第 i 个元素,将最大的数放到 i+1 的位置,是否与越小的元素会经由交换慢慢“浮”到数列的顶端相反呢?例如如下伪代码:

    function bubble_sort (array, length) { var i, j; for(i from 0 to length-1){ for(j from 0 to length-2-i){ if (array[j] > array[j+1]) swap(array[j], array[j+1]) } } } 

    所以干脆叫“沉塘排序”?

    14 条回复    2024-08-29 00:25:20 +08:00
    zdt3476
        1
    zdt3476  
       2024-08-28 09:36:57 +08:00   1
    Bubble sort, sometimes referred to as sinking sort
    MozzieW
        2
    MozzieW  
       2024-08-28 09:37:10 +08:00
    本质是一样的,遍历的顺序是实现差异。

    你如果觉得无聊,叫“上天排序”也可以,就是“你怎么不上天呢”那个上天
    HackerJax
        3
    HackerJax  
    OP
       2024-08-28 09:39:24 +08:00
    @zdt3476 请问这句话是哪里看到的
    HackerJax
        4
    HackerJax  
    OP
       2024-08-28 09:41:33 +08:00
    @zdt3476 看到了,英文维基第一句
    zdt3476
        5
    zdt3476  
       2024-08-28 09:42:00 +08:00
    BBrother
        6
    BBrother  
       2024-08-28 09:44:04 +08:00
    那看你怎么定义数列顶端了
    iOCZS
        7
    iOCZS  
       2024-08-28 09:51:03 +08:00
    地上也是地下
    paopjian
        8
    paopjian  
       2024-08-28 10:07:44 +08:00
    算法里不要根据数值大小联系为现实现象, 不然背包问题装石头又要被抬杠是装箱问题了
    pkoukk
        9
    pkoukk  
       2024-08-28 10:55:39 +08:00
    同意 8#
    假如给你一个数列,里面的每个元素是 doi 的时长,那么请问,如果我需要一个 x 能力的排序,是沉塘还是冒泡?
    zero47
        10
    zero47  
       2024-08-28 11:47:13 +08:00
    先放左边,j 从 i 到 length-1, 不就是冒泡吗?我也好奇为啥例子总是先放右边
    lfitzgerald
        11
    lfitzgerald  
       2024-08-28 14:48:45 +08:00
    @iOCZS 我的理解是:地上是指地面以上,地下是指地面以下。这跟有卵用和没卵用不一样
    atuocn
        12
    atuocn  
       2024-08-28 15:54:01 +08:00
    只是一个相对的说法吧。大数沉下去,不等价与小数浮上来吗。叫冒泡估计和递归有关系吧,每次冒泡,都是去掉沉底元素后剩下元素的递归。
    Georgedoe
        13
    Georgedoe  
       2024-08-28 17:07:58 +08:00
    要抽象出 comparator 的概念 , 大和小是人为定义的
    cybort
        14
    cybort  
       2024-08-29 00:25:20 +08:00 via Android
    你把交换的条件改一下看看?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1081 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 18:00 PVG 02:00 LAX 10:00 JFK 13:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86