给定一个整数元素的数组,任务是删除重复的值并以排序的方式打印出不同的元素。
下面给出了一个以4、6、5、3、4、5、2、8、7和0的顺序存储整数类型值的数组,现在,结果将以0、2、3、4、4、5、5、6、7和8的顺序打印出排序的元素,但是这个结果仍然包含重复的值4和5,应该将它们删除,最终的结果将是0、2、3、4、5、6、7和8
示例
Input: array[] = {4, 6, 5, 3, 4, 5, 2, 8, 7, 0}
Output: 0 2 3 4 5 6 7 8
解释
所以,为了达到我们的目标,我们将
- 将不同的元素存储在另一个数组array1中。
- 对array1进行排序。
- 打印array1的值。
算法
START
STEP 1: DECLARE VARIABLES i, j, array1[size], temp, count = 0
STEP 2: LOOP FOR i = 0 AND i < size AND i++
LOOP FOR j = i+1 AND j < size AND j++
IF array[i] == array[j]) then,
break
END IF
END FOR
IF j == size then,
ASSIGN array1[count++] WITH array[i]
END IF
END FOR
STEP 3: LOOP FOR i = 0 AND i < count-1 AND i++
LOOP FOR j = i+1 AND j < count AND j++
IF array1[i]>array1[j] then,
SWAP array1[i] AND array[j]
END IF
END FOR
END FOR
STEP 4: PRINT array1
STOP
示例
#include <stdio.h>
/* Prints distinct elements of an array */
void printDistinctElements(int array[], int size) {
int i, j, array1[size], temp, count = 0;
for(i = 0; i < size; i++) {
for(j = i+1; j < size; j++) {
if(array[i] == array[j]) {
/* Duplicate element found */
break;
}
}
/* If j is equal to size, it means we traversed whole
array and didn't found a duplicate of array[i] */
if(j == size) {
array1[count++] = array[i];
}
}
//sorting the array1 where only the distinct values are stored
for ( i = 0; i < count-1; i++) {
for ( j = i+1; j < count; j++) {
if(array1[i]>array1[j]) {
temp = array1[i];
array1[i] = array1[j];
array1[j] = temp;
}
}
}
for ( i = 0; i < count; ++i) {
printf("%d ", array1[i]);
}
}
int main() {
int array[] = {4, 6, 5, 3, 4, 5, 2, 8, 7, 0};
int n = sizeof(array)/sizeof(array[0]);
printDistinctElements(array, n);
return 0;
}
输出
如果我们运行上面的程序,它将生成以下输出。
0 2 3 4 5 6 7 8