将给定的数组按照数组中的顺序对于相邻且指定键名值相同的元素,依据值大小进行合并,应该怎么才处理?(给定一个数组,按从小到大的顺序输出其中的元素,对于相同的元素,

201℃ CAROLINE

将给定的数组按照数组中的顺序对于相邻且指定键名值相同的元素,依据值大小进行合并,应该怎么才处理?(给定一个数组,按从小到大的顺序输出其中的元素,对于相同的元素,只输出一个.)

给定一个数组,按从小到大的顺序输出其中的元素,对于相同的元素,只输出一个.

展开全部

先按升序排序好这个数组,再按以下的代码输出这总共有n个元素的数组:

printf("%d ",a[0]);

i=1;

while(i{

while(a[i]==a[i-1])i++;

printf("%d ",a[i++]);

}

C语言编程问题:给数组中的元素按顺序编号

最直接的办法,用一个数组来作hash,时间复杂度最低,但是有最大值的限制,如下:

#include<stdio.h>

#define MAX_NUM 10000

#define n 10

int main()

{

int b[MAX_NUM] = {0};

int a[n],i,j;

int max = 0;

for(i=0;i<n;i++)

{

scanf("%d",&a[i]);

if(a[i] >= MAX_NUM)

{

printf("invalid value [%d]! max than %d\n",a[i], MAX_NUM);

return -1;

}

b[a[i]] = 1;

if(a[i] > max)

{

max = a[i];

}

}

int idx = 1;

for(i = 0; i <= max; i++)

{

if(b[i] > 0)

{

b[i] = idx;

idx++;

}

}

for(i=0;i<n - 1;i++)

printf("%d,",b[a[i]]);

printf("%d\n", b[a[n - 1]]);

return 0;

}

-----------

修改过的:

#include<stdio.h>

#define MAX_NUM 10000

#define n 10

int main() {

int b[MAX_NUM] = {0};

int a[n],i,j;

int max = 0;

for(i=0;i<n;i++) {

scanf("%d",&a[i]);

if(a[i] >= MAX_NUM)

return -1;

b[a[i]] = 1;

max = a[i] > max ? a[i] : max;

}

int idx = 1;

for(i = 0; i <= max; i++)

b[i] = b[i] > 0 ? idx++ : b[i];

for(i=0;i<n - 1;i++)

printf("%d,",b[a[i]]);

printf("%d\n", b[a[n - 1]]);

return 0;

}

不过代码长度有这么重要么?代码的可读性和正确性才是第一位的! 如果太纠结于长度,不如把所有代码都写道一行算了。多爽:“看,我的代码一行就搞定了;”

关于 数组 按照给定顺序排序问题。

public class Test

{

public static void main(String args[])

{

int[] arr = {4, 1, 2, 6, 3, 8, 9, 10, 7, 5};

for (int i = 0; i < 10; i++)

System.out.print(arr[i] + " ");

System.out.println();

for (int i = 0; i < 10 - 1; i++)

for (int j = 0; j < 10 - 1 - i; j++)

{

if (arr[j] > arr[j + 1])

{

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

for (int i = 0; i < 10; i++)

System.out.print(arr[i] + " ");

}

}

C语言给数组中的元素按顺序编号

首先,for(i=0;i<10;i++)

for(j=0;j<10;j++)

for(i=0;i<10;i++)

这三个for循环是打错了?

其次你的比较那儿也有问题,试想,当执行到7的时候,7和1比,count = 1,7再和第二个1比,count等于2,后面两个不变,但是你往b数组中存放的时候,count又加了1,肯定就变成3了,9同理,把算法再改改

TAG: 数组