免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[算法] 我认为用冒泡法对链表进行排序很蠢,元芳,这事儿你怎么看? [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
21 [报告]
发表于 2012-11-19 20:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
22 [报告]
发表于 2012-11-19 20:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
23 [报告]
发表于 2012-11-19 20:51 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
24 [报告]
发表于 2012-11-19 21:15 |只看该作者
回复 20# hbmhalley


    因为数组上的插入是基于二分搜索的。

论坛徽章:
0
25 [报告]
发表于 2012-11-19 21:23 |只看该作者
回复 24# sonicling


    so? 数组元素的移动也能做到 logn ?

论坛徽章:
0
26 [报告]
发表于 2012-11-19 21:24 |只看该作者
本帖最后由 hbmhalley 于 2012-11-19 21:28 编辑
pmerofc 发表于 2012-11-19 20:45
回复 18# hbmhalley
描述一下冒泡的算法如何?
   我觉得不可能和11楼一样
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct _node_t {
  4.         int w ;
  5.         struct _node_t *n ;
  6. } node_t ;

  7. node_t *head = NULL ;

  8. void ins (int k) {
  9.         node_t *t = malloc (sizeof(node_t)) ;
  10.         t->w = k ;
  11.         t->n = head ;
  12.         head = t ;
  13. }

  14. void print () {
  15.         node_t *t ;
  16.         for (t = head ; t != NULL ; t = t->n) {
  17.                 printf ("%d\n" , t->w) ;
  18.         }
  19.         puts ("") ;
  20. }

  21. void sort () {
  22.         int flag ;
  23.         do {
  24.                 flag = 0 ;
  25.                 node_t **i ;
  26.                 for (i = &head ; (*i)->n != NULL ; i = &(*i)->n) {
  27.                         node_t *j = (*i)->n ;
  28.                         if ((*i)->w > j->w) {
  29.                                 flag = 1 ;
  30.                                 (*i)->n = j->n ;
  31.                                 j->n = *i ;
  32.                                 *i = j ;
  33.                         }
  34.                 }
  35.         } while (flag) ;
  36. }

  37. int main () {
  38.         int t ;
  39.         while (scanf ("%d" , &t) == 1) {
  40.                 ins (t) ;
  41.         }

  42.         print () ;
  43.         sort () ;
  44.         print () ;

  45.         return 0 ;
  46. }
复制代码
  1. (for ((i=0;i<9;++i));do echo $RANDOM; done)|./temp.exe
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
27 [报告]
发表于 2012-11-19 21:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
28 [报告]
发表于 2012-11-19 23:29 |只看该作者
本帖最后由 hbmhalley 于 2012-11-19 23:33 编辑

回复 27# pmerofc


    但 11L 不是原地排序.
    看错了.

    但不影响. 不过是交换与插入的区别罢了.
    不如你也把代码写出来.


    不对. 11L 确实不是原地排序

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
29 [报告]
发表于 2012-11-19 23:33 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
30 [报告]
发表于 2012-11-19 23:35 |只看该作者
本帖最后由 hbmhalley 于 2012-11-19 23:37 编辑

回复 29# pmerofc


    囧 .. 改乱了.再贴一遍

不过是交换与插入的区别罢了.
不如你也把代码写出来.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP