Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1317480
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: C/C++

2013-08-20 16:14:21

依然在温习两个月之前写的程序

直接插入排序,还是那样,主要把算法模型搞清楚
模型在这里时间复杂度是O(n2)

之前写的代码看起来很不舒服啊,以后要重新整理一下,主要是输入和不要界定输入个数


  1. #include<stdio.h>

  2. /*********************************************************
  3. .这次错误找半天,是因为第二个循环在出bug了,姑且做个小规定
  4. 1,当有两个循环时候,且第二个循环要用到第一个循环的参数,
  5. 第二个循环是控制变量--,那么第一i就用1;第二个循环++,那么第一个就用0


  6. .该方法优点,将我的方法的两次判断合并一次了,但是感觉思路没我那个清晰
  7. *******************************************************/


  8. //5 nums from low to high
  9. int *insertion_sort_v2(int *a)

  10. {
  11.     int i, j, tmp;
  12.     int *p = a;
  13.     for(i = 0; i < 5-1 ; i++)
  14.     {    
  15.         tmp = p[i+1];
  16.         printf("debug tmp = %d \n",tmp);
  17.         for(j = i; j+1 >0 && tmp < p[j]; j--)
  18.         {    p[j+1] = p[j];
  19.             printf("debug:p[%d] = %d\n", j, p[j]);
  20.         }

  21.         p[j] = tmp;
  22.     }    
  23.     return p;
  24. }

  25. int main(int argc, char **argv)
  26. {
  27.     int array[5] = {5, 3, 6, 1, 2};
  28.     int i;
  29.     int *result = NULL;

  30.     result = insertion_sort_v2(array);

  31.     for(i = 0; i < 5; i++)
  32.         printf("a[%d] = %d\n", i , result[i]);

  33.     while(1);

  34.     return 0;
  35. }

阅读(1420) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~