设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【每日一坑 2】 去除重复

[复制链接]

0

主题

0

好友

21

积分

新手上路

Rank: 1

楼主
发表于 2013-12-17 15:42:59 |显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main(void)
  5. {
  6.     int i,j,min,pos;
  7.     int num[10];
  8.    
  9.     // 随机数存入数组并逐个输出
  10.     srand((unsigned)time(NULL));
  11.     for(i=0; i<10; i++)
  12.     {
  13.         num[i] = rand() % 10;    // 0~9的随机数
  14.         printf("%d ",num[i]);
  15.     }
  16.     printf("\n");

  17.     // 用"选择排序法"排序
  18.     // 找出数组中最小的数,与数组第一个数交换。
  19.     // 再找出除第一个数外,余下最小的数,以此类推
  20.     for(i=0; i<9; i++)
  21.     {
  22.         min = num[i];
  23.         pos = i;
  24.         for(j=i+1; j<10; j++)   
  25.         {
  26.             if(num[j] < min)
  27.             {
  28.                 min = num[j];
  29.                 pos = j;        
  30.             }
  31.         }
  32.         num[pos] = num[i];
  33.         num[i] = min;
  34.     }
  35.     // 输出"未去重"的数组
  36.     for(i=0; i<10; i++)
  37.         printf("%d ",num[i]);
  38.     printf("\n");
  39.    
  40.     // 输出"排序后并去重"的数字
  41.     // 对比 的当前位置前面的所有数字,没重复则输出
  42.     printf("%d ",num[0]);   
  43.     for(i=1; i<10; i++)
  44.     {
  45.         for(j=i; j>0; j--)
  46.         {
  47.             if(num[i] == num[j-1]) break;
  48.             else
  49.                 if(j==1)
  50.                 {
  51.                     printf("%d ",num[i]);
  52.                 }
  53.         }
  54.     }

  55.     return 0;
  56. }
复制代码
xuefu帮忙看看呗,好像不是很高效 。。先排序后去重,m、n设为10,懒得接受输入。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-7 11:30 , Processed in 0.016278 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部