【发布时间】:2014-02-06 17:40:31
【问题描述】:
这是一个将数组从最小值排序到最大值的循环,我需要将此循环的结果放入另一个数组中,以便过滤和删除仅出现一次的数字并找到剩下的最后一个成员。
这是我目前的代码:
#include<stdio.h>
#include<conio.h>
#define buffas 1024
void main() {
int arr[buffas],i,j,element,no,temp;
printf("\nEnter the no of Elements: ");
scanf("%d", &no);
for(i=0; i<no; i++) {
printf("\n Enter Element %d: ", i+1);
scanf("%d",&arr[i]);
}
for(i=0; i<no; i++) {
for(j=i; j<no; j++) {
if(arr[i] > arr[j]) {
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
printf("\nSorted array:");
for(i=0; i<no; i++) {
printf("\t%d",arr[i]);
}
getch();
}
如何更改
printf("\t%d",arr[i]);
填充另一个数组,然后对其进行排序以删除单个条目并仅保留至少重复一次的条目。
例如。第一个数组是
2 2 1 6 9 9
第二次排序后的结果应该是
2 2 9 9
【问题讨论】:
-
您能否编辑您的帖子并缩进并评论您的代码?
-
好像是作业问题,你有没有尝试实现二次排序?
-
抱歉缩进,我似乎无法正确处理。我没有尝试二次排序,我该怎么做?
-
通过遍历有序数组的每个元素,可以检查下一个或前一个元素是否与当前元素相同(考虑边界),如果是,则将其添加到第二个数组.
-
遍历排序后的数组,找到具有相同值的行范围,并将这些行复制到目标数组。您只需要计算每个行值的重复次数。