比如说:要你从键盘上输入10个int 型数,去掉重复的,然后将其由大到小排序输出。求具体代码(关键部分就可以了)。
1,创建二个int型数组,一个保存你从键盘上输入的数,另一个用于排序
2,循环
3,如果遇到相同的,continue,进行下一个
4,如果不相同,进入第二个循环:把这个数和第二个数组的数进行比较,比其小的话比较下一个,大的话和其交换,然后拿交换后的数,比较下一个
5,第二个数组中的数,就是从大到小并且没有重复的数字
2,循环
3,如果遇到相同的,continue,进行下一个
4,如果不相同,进入第二个循环:把这个数和第二个数组的数进行比较,比其小的话比较下一个,大的话和其交换,然后拿交换后的数,比较下一个
5,第二个数组中的数,就是从大到小并且没有重复的数字
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-03-17
#include<iostream>
using namespace std;
int main()
{
int i, a[10], j, temp;
cout<<"输入10个数:"<<endl;;
for(i = 0; i <10; i++)
{
cin>>a[i];
}
for(i = 0; i <10-1; i++)
{
for(j =0; j <10-1 -i; j++)
{
if(a[j] < a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0; i <10; i++)
{
if(a[i] !=a[i+1])
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
这是详细程序 希望你能满意 呵呵~~追问
using namespace std;
int main()
{
int i, a[10], j, temp;
cout<<"输入10个数:"<<endl;;
for(i = 0; i <10; i++)
{
cin>>a[i];
}
for(i = 0; i <10-1; i++)
{
for(j =0; j <10-1 -i; j++)
{
if(a[j] < a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0; i <10; i++)
{
if(a[i] !=a[i+1])
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
这是详细程序 希望你能满意 呵呵~~追问
我想知道怎么先去重再排序,能帮我解答不?谢谢了
追答没必要 那样的算法不是最简单的 我们算法的关键就是找到最简单的方法 如果算法不是最简单的 就不是最优的 那样没有意义
第2个回答 2011-03-17
你可以先排序,再去重。具体参考我的回答:
第3个回答 2011-03-28
冒泡排序
int tmp;
for(int i=0;i<9;i++)
for(int j=0;j<10;j++)
if(a[i]<a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
int tmp;
for(int i=0;i<9;i++)
for(int j=0;j<10;j++)
if(a[i]<a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}