ในส่วนนี้เราจะมาดูวิธีการเรียงลำดับอัลกอริธึมใน C++ sorted array isan array ซึ่งแต่ละองค์ประกอบถูกจัดเรียงตามลำดับเช่นตัวเลขตัวอักษร ฯลฯ มีอัลกอริธึมมากมายในการจัดเรียงอาร์เรย์ตัวเลขเช่น bubblesort, การเรียงลำดับการแทรก, การเรียงลำดับการเลือก, การเรียงลำดับผสาน, การเรียงลำดับอย่างรวดเร็ว, การเรียงลำดับแบบกอง เป็นต้น รายละเอียดเพิ่มเติมเกี่ยวกับการจัดเรียงอาร์เรย์โดยใช้การเรียงลำดับการเลือกแสดงไว้ด้านล่าง
การเรียงลำดับการเลือกเป็นวิธีการเรียงลำดับที่ให้ผลการเรียงลำดับอาร์เรย์ มันทำโดยการค้นหาองค์ประกอบที่เล็กที่สุดในอาร์เรย์ซ้ำแล้วซ้ำอีกและสลับกับองค์ประกอบที่จุดเริ่มต้นของส่วนที่ไม่ได้เรียงลำดับ
โปรแกรมที่ใช้ sorted array โดยใช้ Selection sort มีดังต่อไปนี้
ตัวอย่าง
#include<iostream>
using namespace std;
void selectionSort(int a[], int n) {
int i, j, min, temp;
for (i = 0; i < n - 1; i++) {
min = i;
for (j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
int main() {
int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
int n = sizeof(a)/ sizeof(a[0]);
int i;
cout<<"Given array is:"<<endl;
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
cout<<endl;
selectionSort(a, n);
printf("\nSorted array is: \n");
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
return 0;
} ผลลัพธ์
Given array is: 22 91 35 78 10 8 75 99 1 67 Sorted array is: 1 8 10 22 35 67 75 78 91 99
ในโปรแกรมข้างต้น SelectionSort() เป็นฟังก์ชันที่จัดเรียงอาร์เรย์ a[] โดยใช้การเรียงลำดับการเลือก มีสองลูปใน selectSort() ในการวนซ้ำของ theouter for loop แต่ละครั้ง จะพบองค์ประกอบขั้นต่ำในอาร์เรย์ที่เหลือหลังจากที่ i ถูกพบแล้วสลับกับองค์ประกอบปัจจุบันที่ i ซ้ำจนกว่าอาร์เรย์จะแยกออก ดังแสดงด้านล่าง
void selectionSort(int a[], int n) {
int i, j, min, temp;
for (i = 0; i < n - 1; i++) {
min = i;
for (j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
} ในฟังก์ชัน main() อาร์เรย์ a[] ถูกกำหนดไว้ จากนั้นฟังก์ชัน selectSort() จะถูกเรียกด้วยอาร์เรย์ a[] และขนาด n ของอาร์เรย์ ในที่สุดอาร์เรย์ที่เรียงลำดับจะปรากฏขึ้น ดังภาพด้านล่าง
int main() {
int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
int n = sizeof(a)/ sizeof(a[0]);
int i;
cout<<"Given array is:"<<endl;
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
cout<<endl;
selectionSort(a, n);
printf("\nSorted array is: \n");
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
return 0;
}