ใส่องค์ประกอบอาร์เรย์แล้ว จัดเรียงตัวเลขในลำดับจากมากไปน้อยโดยใช้เทคนิคการสลับ ต่อมา ด้วยความช่วยเหลือของตำแหน่งดัชนี ให้ลองพิมพ์องค์ประกอบที่ใหญ่เป็นอันดับสองและเล็กที่สุดเป็นอันดับสองในอาร์เรย์
อาร์เรย์ใช้เพื่อเก็บกลุ่มขององค์ประกอบทั่วไปภายใต้ชื่อเดียว
การทำงานของอาร์เรย์ในภาษาซีมีดังต่อไปนี้ -
- แทรก
- ลบ
- ค้นหา
อัลกอริทึม
ด้านล่างนี้เป็นอัลกอริทึมในการค้นหาตัวเลขที่ใหญ่เป็นอันดับสองและน้อยที่สุดเป็นอันดับสองในอาร์เรย์ -
ขั้นตอนที่ 1 − ประกาศและอ่านจำนวนองค์ประกอบ
ขั้นตอนที่ 2 − ประกาศและอ่านขนาดอาร์เรย์ที่รันไทม์
ขั้นตอนที่ 3 − ป้อนองค์ประกอบอาร์เรย์
ขั้นตอนที่ 4 − เรียงลำดับตัวเลขจากมากไปหาน้อย
ขั้นตอนที่ 5 − จากนั้น ให้ค้นหาตัวเลขที่ใหญ่เป็นอันดับสองและน้อยที่สุดเป็นอันดับสองโดยใช้ดัชนี
ขั้นตอนที่ 6 − พิมพ์ตัวเลขที่ใหญ่เป็นอันดับสองและรองลงมา
โปรแกรม
รับด้านล่างเป็นโปรแกรม C เพื่อ ค้นหาตัวเลขที่ใหญ่เป็นอันดับสองและรองลงมาเป็นอันดับสองในอาร์เรย์ −
#include<stdio.h> void main(){ int i,j,a,n,counter,ave,number[30]; printf ("Enter the value of N\n"); scanf ("%d", &n); printf ("Enter the numbers \n"); for (i=0; i<n; ++i) scanf ("%d",&number[i]); for (i=0; i<n; ++i){ for (j=i+1; j<n; ++j){ if (number[i] < number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } } } printf ("The numbers arranged in descending order are given below\n"); for (i=0; i<n; ++i) printf ("%10d\n",number[i]); printf ("The 2nd largest number is = %d\n", number[1]); printf ("The 2nd smallest number is = %d\n", number[n-2]); ave = (number[1] +number[n-2])/2; counter = 0; for (i=0; i<n; ++i){ if (ave==number[i]) ++counter; } if (counter==0) printf("The average of 2nd largest & 2nd smallest is not in the array\n"); else printf("The average of 2nd largest & 2nd smallest in array is %d in numbers\n", counter); }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter the value of N 5 Enter the numbers 10 12 17 45 80 The numbers arranged in descending order are given below 80 45 17 12 10 The 2nd largest number is = 45 The 2nd smallest number is = 12 The average of 2nd largest & 2nd smallest is not in the array