Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26407
  • 博文数量: 22
  • 博客积分: 880
  • 博客等级: 准尉
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-01 08:00
文章分类

全部博文(22)

文章存档

2010年(22)

我的朋友
最近访客

分类: C/C++

2010-05-11 09:39:59

/*
1> 冒泡法排序 方法1
    不考虑去除重复数的情况下:
   *第几大数,由第一个for循环的条件变量k决定
 
2> 如果只找第二大数的话,方法2简单
 
3>去除重复数的情况下:
    找第二大数,有重复数不算在第几大数内 方法3
*/
int main(void)
{
        int num[] = { 1, 7, 2, 5, 6, 8 };
        int i, j, tmp;
        int k;
        k = sizeof(num)/(sizeof(num[0]));
/* test1 */
        int i, j, tmp;
        int k;
        k = sizeof(num)/(sizeof(num[0]);
        for (i = 0; i < k; i++)    //k为第几大数的坐标,如果找第3大数,k设为3结束,后面不需要找了。
        {
                for (j = i+1; j < k; j++)
                {
                        if (num[i] < num[j])
                        {
                                tmp = num[i];
                                num[i] = num[j];
                                num[j] = tmp;                  
                        }
                }
        }
        for (i = 0; i < k; i++)
        {
                printf("%d ", num[i]);
        }
#if 0
/* test2 */
        int num[] = { 1, 2, 8, 5, 6, 7 };
        int i, j, tmp;
        int k;
        k = sizeof(num)/(sizeof(num[0]));
        for (i = 1; i < k; i++)
        {
                if (j < num[i])
                {
                        tmp = j;    //tmp保存第二大数 
                        j = num[i];
                }
        }
        printf("%d\n", tmp);
#endif
 
#if 0
/* test3 */
        int num[] = { 1, 6, 2, 8, 5, 8, 7, 6, 8, 6 };
        int i, j, k, h;
        k = 1, s = 1, h = 1, m = 1;
        int x, y, z, c;
        x = 0, y = 0, z = 0, c = 0;
        j = sizeof(num)/(sizeof(num[0]));
        printf("j = %d\n", j);
        for (i = 0; i < j; i++)
        {
                if (x == num[i])
                {
                        k = 0;
                        continue;
                }
                if (x < num[i])
                {
                        c = z;
                        z = y;
                        y = x;
                        x = num[i];
                }
                else if (y == num[i])
                {
                        s = 0;
                        continue;
                }
                else if(y < num[i])
                {
                        c = z;
                        z = y;
                        y = num[i];
                }
                else if (z == num[i])
                {
                        h = 0;
                        continue;
                }
                else if (z < num[i])
                {
                        c = z;
                        z = num[i];
                }
                else if (c == num[i])
                {
                        m = 0;
                        continue;
                }
                else if (c < num[i])
                {
                        c = num[i];
                }
        }
        if (!(k == 0))
        {
                printf("%d ", x);
        }
        if (s != 0)
        {
                printf("%d ", y);
        }
        if (!(h == 0)
        {
                printf("%d ", z);
        }
        if (m != 0)
        {
                printf("%d ", c);
        }
}
#endif
 
    return 0;
}
阅读(479) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~