如何让这些数组php 去除数组重复值重复?然后在下面从小到大排列出来

欢迎加入我们,一同切磋技术 &
用户名: &&&
密 码: &
共有 9230 人关注过本帖
标题:求助 一维数组求重复元素以及个数
等 级:新手上路
结帖率:50%
&&已结贴√
&&问题点数:20&&回复次数:13&&&
求助 一维数组求重复元素以及个数
输入6个从小到大排列的数字,首要条件:要求输出其中重复元素最多的项以及个数,如果有多组重复元素个数一样时,输出最大的元素以及个数
Eg: 输入:3 3 5 5 7 9 得到:value=5, 相同个数为2;//元素3、 5均重复两次,所以取5
&&&&&输入:5 5 5 5 7 7 得到:value=5, 相同个数为4;//虽然7大于5,但是5重复了4次,所以取5
我首先写的代码如下,求大神帮我修改一下,感激不尽!!!
程序代码:
#include &stdio.h&
#define SIZE 6
int main (void) {
&&& int number[SIZE],i,k,
&&& value=<font color=#;
&&& k =<font color=#;
&&& i = <font color=#;
&&& while (i & SIZE) {
&&&&&&&&scanf(&%d&, &number[i]);
&&&&&&&&i++;
&&& i=<font color=#;
&&& while(i&SIZE-<font color=#) {
&&&&&&&&if (number[i]==number[i+<font color=#]) {
&&&&&&&&&&&&value = number[i];
&&&&&&&&&&&&&&&&&&&&&&&&k++;
&&&&&&&&i++;
&&&&&&&&printf(&value=%d, 相同个数为%d\n&, value, k);
在这种情况下,当只有一组元素重复时时满足条件的,但当我输入3 3 5 5 7 9的时候,得到的k的结果为3了,c语言在3的时候判断了一次,在5的时候判断了一次,所以得到的结果不符合条件。
然后我进行了修改,改成了下面的模式:(开头部分因为和上面相同,所以我省略了,只写了判断的部分)
程序代码:
&&&&&&&&k=<font color=#;
&&& i=<font color=#;
&&& while(i&SIZE-<font color=#) {
&&&&&&&&if (number[i]==number[i+<font color=#]) {
&&&&&&&&&&&&value = number[i];
&&&&&&&&i++;
&&& for(i=<font color=#;i&SIZE;i++) {
&&&&&&&&if(number[i]==value) {
&&&&&&&&&&&&k++;
&&&&&&&&printf(&value=%d, 相同个数为%d\n&, value, k);
修改后对于3 3 5 5 7 9 这串数组满足条件了,但是对于5 5 5 5 7 7, 输出的结果为value=7, 相同个数为2;这里满足了输出最大的元素这个条件而不是重复次数最多的条件,这里我不知道该怎么改了,求求大神帮忙修改下,谢谢啦!
[ 本帖最后由 rtfbvg 于
15:09 编辑 ]
搜索更多相关主题的帖子:
来 自:神界
等 级:贵宾
威 望:367
帖 子:12689
专家分:49640
&&得分:16&
程序代码:
#include &stdio.h&
#define SIZE 6
#define max 20000
int main (void)
&&& int number[SIZE],i,m,n;
&&& int xy[max]={<font color=#};
&&& for(i=<font color=#;i&SIZE;i++)
&&&&&&&&scanf(&%d&, &number[i]);
&&&&&&&&xy[number[i]]++;
&&& for(i=<font color=#;i&i++)
&&&&&&&&if(xy[i]&=m)
&&&&&&&&&&&&m=xy[i];
&&&&&&&&&&&&n=i;
&&& printf(&重复频率最高=%d&&&其值=%d\n&,m,n);
&&& return <font color=#;
DO IT YOURSELF !
等 级:新手上路
回复 2楼 wp231957
请问xy[number[i]]++;是什么意思呢?
等 级:版主
威 望:126
帖 子:1609
专家分:9022
他这是把你输入的数组的值作为另一个数组下标,扫描你输入的数并将该数对应下标的数组值加1,数组扫描完,重复数的数量也计数完成,该算法方便快速,不足之处是对你输入的数据有限制,比如他的实例要求你输入的数据为小于20000的正整数。
能编个毛线衣吗?
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
回复 2楼 wp231957
为什么运行不过?
风回小院庭芜绿,柳眼春相续
等 级:新手上路
回复 4楼 wmf2014
谢谢wmf2014!!
另外 int xy[max]={0};让xy 数组第200001项=0,起到什么作用呢?
[ 本帖最后由 rtfbvg 于
18:04 编辑 ]
等 级:新手上路
回复 5楼 纳兰伽香
需要赋予m,n初始值,比如说m=0;n=0;
来 自:湖南
等 级:黑侠
帖 子:243
专家分:635
程序代码:
#include &stdio.h&
#define SIZE 6
int main (void)
&&& int a[SIZE], count[SIZE];
&&& int i,
&&& for (i = <font color=#; i & SIZE; i++)
&&&&&&&&scanf(&%d&, &a[i]);
&&&&&&&&count[i] = <font color=#;
&&& for (i = <font color=#; i & SIZE - <font color=#; i++)
&&&&&&&&if (a[i] == a[i + <font color=#])
&&&&&&&&&&&&count[i + <font color=#] = count[i] + count[i + <font color=#];
&&& for (i = SIZE - <font color=#; i & <font color=#; i--)
&&&&&&&&for(j = i -<font color=#; j &= <font color=#; j--)
&&&&&&&&&&&&if(count[i] & count[j])
&&&&&&&&&&&&&&& break;
&&&&&&&&if(j == -<font color=#)
&&&&&&&&&&&&n = a[i];
&&&&&&&&&&&&break;
&&&&&&&&n = a[SIZE -<font color=#];
&&& printf(&出现次数最多的数为%d\n&, n);
&&& return <font color=#;
人有多懒,编程就有多难。
等 级:论坛游民
帖 子:67
专家分:48
回复 2楼 wp231957
您的代码很经典,我还有一个问题,在里面m的作用,不用给值吗?那后面怎么比较大小呢,表示不懂。
貌似运行结果有点问题
编程!编程!!编程!!!
重要的事情说三遍!!!!
来 自:神界
等 级:贵宾
威 望:367
帖 子:12689
专家分:49640
回复 9楼 ·charles
m 就是一个临时变量 用来保存值最大的数值,应该赋初值为0&&大概是copy代码时 遗漏了
DO IT YOURSELF !
版权所有,并保留所有权利。
Powered by , Processed in 0.097048 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved输入一个数组&把所有数字按从小到大排列出来
先来分析一下昨天这个程序老是运行结果不对的原因,修改前的程序在执行第一次调换的时候还是对的,可再去循环执行的时候结果就不对了,那是因为我在交换值得时候把最小值放到第一个却把原来第一位上的值放到了最后一位,用表达式的话就是,f(0)=f(index),f(index)应该存放第一位上的值,因为失误放到了最后一位,这就导致了数组元素的改变,就出现了两个相同的元素。
#include &stdio.h&
int main()
&int i,index,t,k,n;
&int f[10];
&scanf("%d",&n);
&for(i=0;i&n;i++)
&&scanf("%d",&f[i]);
&for(k=0;k&n;k++)
&&int index=k;
&for(i=k+1;i&n;i++)
&{if(f[index]&f[i])&&
&&index=i;
&&f[k]=f[index];
&&f[index]=t;
&for(i=0;i&n;i++)
&&&printf("%d
&return 0;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
把一个int数组的数字从小到大排列(C#)
摘要:usingSnamespaceConsoleApplication1{//////Class1的摘要说明。///classClass1{//////应用程序的主入口点。///[STAThread]staticvoidMain(string[]args){MinToMaxmtm=newMinToMax();int[]array={1,2,6,3,8,3,4,0,5,23,52,12,234,235,,123,143,1368};int[]las
namespace ConsoleApplication1{ ///
/// Class1 的摘要说明。 ///
class Class1 { ///
/// 应用程序的主入口点。 ///
[STAThread] static void Main(string[] args) { MinToMax mtm= new MinToMax(); int [] array = {1,2,6,3,8,3,4,0,5,23,52,12,234,235,,123,143,1368}; int[] last=mtm.MTM(array); int n=0; for(int i=0;i System.Console.ReadLine(); // // TODO: 在此处添加代码以启动应用程序 // } }
public class MinToMax { public int[] MTM(int [] array)
{ int[] FianlMTM= new int[array.Length]; for(int j=0;j } FianlMTM[array.Length-(j+1)]=
} return FianlMTM; } }}
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
把一个int数组的数字从小到大排列(C#)相关信息,包括
的信息,所有把一个int数组的数字从小到大排列(C#)相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International用java写 定义一个数组 将它们从小到大排列_百度知道
用java写 定义一个数组 将它们从小到大排列
我有更好的答案
最佳答案:冒泡排序算法。一下为C#语言例子:int temp = 0;
int[] arr = { 23, 44, 66, 76, 98, 11, 3, 9, 7 };
Console.WriteLine(&排序前的数组:&);
foreach (int item in arr)
Console.Write(item + & &);
Console.WriteLine();
for (int i = 0; i & arr.Length-1; i++)
for (int j = 0; j & arr.Length-1-i; j++)
if (arr[j+1] & arr[j])
temp = arr[j+1];arr[j+1] = arr[j];arr[j] =
Console.WriteLine(&排序后的数组:&);
foreach (int item in arr)
Console.Write(item + & &);
Console.WriteLine();
Console.ReadKey();
采纳率:72%
排序算法有很多,我这里有用快速排序法实现的代码 /** * 快速排序,排序内容为int数组 * @param pData 数组 * @param left 左边起始下标,即从左至右始于left * @param right 右边结束下标 * @return */ public static int[] QuickSort0(int[] pData, int left, int right) {
int i = left, j =
int middle, strT
if (pData.length &= 1) {
middle = pData[(left + right) / 2];
while ((pData[i] & middle) && (i & right))
while ((pData[j] & middle) && (j & left))
if (i &= j) {
strTemp = pData[i];
pData[i] = pData[j];
pData[j] = strT
} while (i &= j);
if (left & j) {
QuickSort0(pData, left, j);
if (right & i)
QuickSort0(pData, i, right);
return pD }
本回答被网友采纳
将数组中的数字从小到大吗?
方法挺多,写一个常见的冒泡排序:public static void main(String[] args) {
int num[] = { 10, 5, 3, 44, 1 };
int size = num.length - 1;
for (int i = 0; i & i++) {
for (int j = 0; j & j++) {
if (num[j] & num[j + 1]) {
int a = num[j];
num[j] = num[j + 1];
num[j + 1] =
for (int i = 0; i & num. i++) {
System.out.println(num[i] + & &);
  你可以看看下面的代码,简单的实现了数据的排序功能,希望能帮到你。&&&int&array[]&=&{-5,-9,2,5,10,7,895};&&&for(int&i&=&0&;&i&&&array.length&;&i&++)&&&&{&&&&&for(int&j&=&i&+1&;&j&&&array.length&;&j&++)&&&&&&{&&&&&&&if(array[i]&&&array[j])&{&&&&&&&int&temp&=&array[i];&&&&&&&array[i]&=&array[j];&&&&&&&array[j]&=&&&&&&}&&&&}&&&}&&&for(int&i&=&0&;&i&&&array.length&;&i&++)&{&&&&System.out.print(&&&+array[i]+&&&);&&&}
int[] arr = {4,5,2,6}; //用sort方法排序
Arrays.sort(arr);//for循环打印
for(int i = 0;i&arr.i++){
System.out.println(arr[i]);
} //增强for循环打印
for (int i : arr) {
System.out.println(i);
int[]&arr&=&{1,3,5,2,4,2,1,3,5,67,8};&&Arrays.sort(arr);&&for&(int&i&:&arr)&{&&&System.out.println(i);&&}
其他4条回答
为您推荐:
其他类似问题
您可能关注的内容
java的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 php数组去除重复 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信