ด้วยอาร์เรย์ขององค์ประกอบจำนวนเต็ม ภารกิจคือการลบค่าที่ซ้ำกันและพิมพ์องค์ประกอบที่แตกต่างกันในลักษณะที่เรียงลำดับ
รับด้านล่างเป็นอาร์เรย์ที่เก็บค่าประเภทจำนวนเต็มในแบบ 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
- จัดเรียงอาร์เรย์1.
- พิมพ์ค่าของ 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