#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// ... (ฟังก์ชั่นการจัดเรียงทั้ง 6 แบบของคุณ) ...
// ฟังก์ชั่นสำหรับสร้างข้อมูลแบบสุ่ม
void generateRandomArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
arr
[i
] = rand() % 100000; // สร้างเลขสุ่มในช่วง 0-99999 }
}
int main() {
int sizes[] = {1000, 5000, 10000, 20000, 50000};
for (int i = 0; i < num_sizes; i++) {
int n = sizes[i];
int
*arr
= (int
*)malloc
(n
* sizeof(int
)); // ใช้ malloc เพื่อจองหน่วยความจำแบบ dynamic if (arr == NULL) {
perror("Memory allocation failed");
}
printf("Testing with n = %d:\n", n
);
for (int j = 0; j < 10; j++) { // รัน 10 รอบ
generateRandomArray(arr, n);
// ทดสอบแต่ละอัลกอริทึมและจับเวลา
double cpu_time_used;
// Bubble Sort
int
*arr_copy
= (int
*)malloc
(n
* sizeof(int
)); if (arr_copy == NULL) {
perror("Memory allocation failed");
}
memcpy
(arr_copy
, arr
, n
* sizeof(int
)); // คัดลอกข้อมูล start = clock();
bubbleSort(arr_copy, n);
cpu_time_used
= ((double
)(end - start
)) / CLOCKS_PER_SEC
; printf("Bubble Sort: %.6f seconds\n", cpu_time_used
); free(arr_copy); // คืนหน่วยความจำ
// ... (ทำซ้ำกับการจัดเรียงแบบอื่น) ...
}
free(arr); // คืนหน่วยความจำ
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCi8vIC4uLiAo4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LmI4LiZ4LiB4Liy4Lij4LiI4Lix4LiU4LmA4Lij4Li14Lii4LiH4LiX4Lix4LmJ4LiHIDYg4LmB4Lia4Lia4LiC4Lit4LiH4LiE4Li44LiTKSAuLi4KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC5iOC4meC4quC4s+C4q+C4o+C4seC4muC4quC4o+C5ieC4suC4h+C4guC5ieC4reC4oeC4ueC4peC5geC4muC4muC4quC4uOC5iOC4oQp2b2lkIGdlbmVyYXRlUmFuZG9tQXJyYXkoaW50IGFycltdLCBpbnQgbikgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBhcnJbaV0gPSByYW5kKCkgJSAxMDAwMDA7IC8vIOC4quC4o+C5ieC4suC4h+C5gOC4peC4guC4quC4uOC5iOC4oeC5g+C4meC4iuC5iOC4p+C4hyAwLTk5OTk5CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW50IHNpemVzW10gPSB7MTAwMCwgNTAwMCwgMTAwMDAsIDIwMDAwLCA1MDAwMH07CiAgICBpbnQgbnVtX3NpemVzID0gc2l6ZW9mKHNpemVzKSAvIHNpemVvZihzaXplc1swXSk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc2l6ZXM7IGkrKykgewogICAgICAgIGludCBuID0gc2l6ZXNbaV07CiAgICAgICAgaW50ICphcnIgPSAoaW50ICopbWFsbG9jKG4gKiBzaXplb2YoaW50KSk7IC8vIOC5g+C4iuC5iSBtYWxsb2Mg4LmA4Lie4Li34LmI4Lit4LiI4Lit4LiH4Lir4LiZ4LmI4Lin4Lii4LiE4Lin4Liy4Lih4LiI4Liz4LmB4Lia4LiaIGR5bmFtaWMKICAgICAgICBpZiAoYXJyID09IE5VTEwpIHsKICAgICAgICAgICAgcGVycm9yKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiKTsKICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICB9CgogICAgICAgIHByaW50ZigiVGVzdGluZyB3aXRoIG4gPSAlZDpcbiIsIG4pOwoKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDEwOyBqKyspIHsgLy8g4Lij4Lix4LiZIDEwIOC4o+C4reC4mgogICAgICAgICAgICBnZW5lcmF0ZVJhbmRvbUFycmF5KGFyciwgbik7CgogICAgICAgICAgICAvLyDguJfguJTguKrguK3guJrguYHguJXguYjguKXguLDguK3guLHguKXguIHguK3guKPguLTguJfguLbguKHguYHguKXguLDguIjguLHguJrguYDguKfguKXguLIKICAgICAgICAgICAgY2xvY2tfdCBzdGFydCwgZW5kOwogICAgICAgICAgICBkb3VibGUgY3B1X3RpbWVfdXNlZDsKCiAgICAgICAgICAgIC8vIEJ1YmJsZSBTb3J0CiAgICAgICAgICAgIGludCAqYXJyX2NvcHkgPSAoaW50ICopbWFsbG9jKG4gKiBzaXplb2YoaW50KSk7CiAgICAgICAgICAgIGlmIChhcnJfY29weSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICBwZXJyb3IoIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIpOwogICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBtZW1jcHkoYXJyX2NvcHksIGFyciwgbiAqIHNpemVvZihpbnQpKTsgLy8g4LiE4Lix4LiU4Lil4Lit4LiB4LiC4LmJ4Lit4Lih4Li54LilCiAgICAgICAgICAgIHN0YXJ0ID0gY2xvY2soKTsKICAgICAgICAgICAgYnViYmxlU29ydChhcnJfY29weSwgbik7CiAgICAgICAgICAgIGVuZCA9IGNsb2NrKCk7CiAgICAgICAgICAgIGNwdV90aW1lX3VzZWQgPSAoKGRvdWJsZSkoZW5kIC0gc3RhcnQpKSAvIENMT0NLU19QRVJfU0VDOwogICAgICAgICAgICBwcmludGYoIkJ1YmJsZSBTb3J0OiAlLjZmIHNlY29uZHNcbiIsIGNwdV90aW1lX3VzZWQpOwogICAgICAgICAgICBmcmVlKGFycl9jb3B5KTsgLy8g4LiE4Li34LiZ4Lir4LiZ4LmI4Lin4Lii4LiE4Lin4Liy4Lih4LiI4LizCgogICAgICAgICAgICAvLyAuLi4gKOC4l+C4s+C4i+C5ieC4s+C4geC4seC4muC4geC4suC4o+C4iOC4seC4lOC5gOC4o+C4teC4ouC4h+C5geC4muC4muC4reC4t+C5iOC4mSkgLi4uCgogICAgICAgIH0KICAgICAgICBmcmVlKGFycik7IC8vIOC4hOC4t+C4meC4q+C4meC5iOC4p+C4ouC4hOC4p+C4suC4oeC4iOC4swogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// ... (ฟังก์ชั่นการจัดเรียงทั้ง 6 แบบของคุณ) ...
// ฟังก์ชั่นสำหรับสร้างข้อมูลแบบสุ่ม
void generateRandomArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
arr[i] = rand() % 100000; // สร้างเลขสุ่มในช่วง 0-99999
}
}
int main() {
int sizes[] = {1000, 5000, 10000, 20000, 50000};
int num_sizes = sizeof(sizes) / sizeof(sizes[0]);
for (int i = 0; i < num_sizes; i++) {
int n = sizes[i];
int *arr = (int *)malloc(n * sizeof(int)); // ใช้ malloc เพื่อจองหน่วยความจำแบบ dynamic
if (arr == NULL) {
perror("Memory allocation failed");
exit(1);
}
printf("Testing with n = %d:\n", n);
for (int j = 0; j < 10; j++) { // รัน 10 รอบ
generateRandomArray(arr, n);
// ทดสอบแต่ละอัลกอริทึมและจับเวลา
clock_t start, end;
double cpu_time_used;
// Bubble Sort
int *arr_copy = (int *)malloc(n * sizeof(int));
if (arr_copy == NULL) {
perror("Memory allocation failed");
exit(1);
}
memcpy(arr_copy, arr, n * sizeof(int)); // คัดลอกข้อมูล
start = clock();
bubbleSort(arr_copy, n);
end = clock();
cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
printf("Bubble Sort: %.6f seconds\n", cpu_time_used);
free(arr_copy); // คืนหน่วยความจำ
// ... (ทำซ้ำกับการจัดเรียงแบบอื่น) ...
}
free(arr); // คืนหน่วยความจำ
printf("\n");
}
return 0;
}