怎么找到一个数组前面的不重复的最小值!

program_Three3 2017-10-28 10:28:02


/* 找最小的前3个不重复的数字*/
#include<iostream>
using namespace std;
int a[6] = { 6,3,2,5,4,1 };
int main()
{
int min = 100, aa[6] = {0},MIN[3], i; //aa[6]是一个标记数组,分配好了就让其自增为1
for (int i = 0;i < 6;i++)
if (a[i] < min)
{
min = a[i];
aa[i]++;
}

return 0;

}
...全文
591 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小熊之怒 2017-10-31
  • 打赏
  • 举报
回复
如果要的是最小三个不重复的数,那楼上的就已经解决了你的问题。
自信男孩 2017-10-31
  • 打赏
  • 举报
回复
#include<iostream>
#include <cmath>
using namespace std;

int a[6] = { 6,3,2,5,4,1 };

int get_min(int *arr, int len);

int main(void)
{
    int min = 100, tmp, MIN[3];
    int i, j;

    MIN[0] = get_min(a, 6);
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 6; j++) {
            tmp = a[j] - MIN[i];
            if (tmp > 0 && tmp < min) {
                min = tmp;
                MIN[i+1] = a[j];
            }
        }
        min = 100;
    }

    for (i = 0; i < 3; i++)
        cout<<MIN[i]<<endl;
    return 0;

}


int get_min(int *arr, int len)
{
    int i, min;

    min = arr[0];
    for (i = 1; i < len; i++)
        if (arr[i] < min)
            min = arr[i];

    return min;
}
program_Three3 2017-10-30
  • 打赏
  • 举报
回复

/* 找最小的前3个不重复的数字*/
#include<stdio.h>
#include<iostream>
using namespace std;
int a[6] = { 6,3,2,5,4,1 };
int main()
{
	int i=0,j,middle ,min = 100, aa[6] = { 0 }, MIN[3];   //aa[6]是一个标记数组,分配好了就让其自增为1			
	for (j = 0;j < 3;j++)
	{
		for (i = 0;i < 6;i++)
		if (aa[i]==0)
				if (a[i] < min)
				{
					min = a[i];
					middle = i;
				}
		MIN[j] = middle;
		aa[middle] = 1;
	}

}
这个为什么选出来的是都是几个重复的数字
program_Three3 2017-10-30
  • 打赏
  • 举报
回复
排序就很简单,问题是现在不排序
program_Three3 2017-10-29
  • 打赏
  • 举报
回复

/* 找最小的前3个不重复的数字*/
#include<iostream>
using namespace std;
int a[6] = { 6,3,2,5,4,1 };
int main()
{
	int min = 100, aa[6] = { 0 }, MIN[3] = {0}, i;   //aa[6]是一个标记数组,分配好了就让其自增为1
	for (int j=0;j<3;j++)
	{ 
		for (int i = 0;i < 6;i++)
		
			if (a[i] < min)
			{
				min = a[i];
				MIN[j] = a[i];
				aa[i]++;
			}
		
	}
	for (int j = 0;j < 3;j++)
		cout << MIN[j] << endl;
	return 0;
	
}
怎么还是没有找到三个最小的值。
CT8100 2017-10-29
  • 打赏
  • 举报
回复
引用 2楼我是你的主体 的回复:
如果数组容量大,排序就很占用时间。不通过排序,找到几个其中不重复的最小值,
排序找到最小的三个就结束-所以不会太耽误时间-个三个临时复制一样的思路
program_Three3 2017-10-28
  • 打赏
  • 举报
回复
如果数组容量大,排序就很占用时间。不通过排序,找到几个其中不重复的最小值,
CT8100 2017-10-28
  • 打赏
  • 举报
回复
冒泡排序找到最小的的三个数就且不重复就停止
大米粥哥哥 2017-10-28
  • 打赏
  • 举报
回复
前三个先放到临时变量 然后遍历 有更小的就替换掉

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧