fork download
  1. #include <stdio.h>
  2. void swap(int* a, int* b) {
  3. int t = *a;
  4. *a = *b;
  5. *b = t;
  6. }
  7.  
  8. int partition(int arr[], int low, int high) {
  9. int pivot = arr[high]; // เลือก pivot จากตำแหน่งสุดท้าย
  10. int i = (low - 1); // ตัวแปรสำหรับตำแหน่งที่จะแทรก pivot
  11.  
  12. for (int j = low; j <= high - 1; j++) {
  13. // ถ้าเจอสมาชิกที่มีค่าน้อยกว่า pivot
  14. if (arr[j] < pivot) {
  15. i++; // เลื่อน i ไปทางขวา
  16. swap(&arr[i], &arr[j]);
  17. }
  18. }
  19. swap(&arr[i + 1], &arr[high]);
  20. return (i + 1);
  21. }
  22.  
  23. void quickSort(int arr[], int low, int high) {
  24. if (low < high) {
  25. // แบ่งอาเรย์และรับตำแหน่ง pivot
  26. int pi = partition(arr, low, high);
  27.  
  28. // แยกอาเรย์เป็นสองส่วนและเรียกฟังก์ชัน quickSort สำหรับแต่ละส่วน
  29. quickSort(arr, low, pi - 1);
  30. quickSort(arr, pi + 1, high);
  31. }
  32. }
  33.  
  34. void printArray(int arr[], int size) {
  35. for (int i = 0; i < size; i++) {
  36. printf("%d ", arr[i]);
  37. }
  38. printf("\n");
  39. }
  40.  
  41. int main() {
  42. int arr[] = {10, 7, 8, 9, 1, 5};
  43. int n = sizeof(arr) / sizeof(arr[0]);
  44. printf("Before sorting: ");
  45. printArray(arr, n);
  46.  
  47. quickSort(arr, 0, n - 1);
  48.  
  49. printf("After sorting: ");
  50. printArray(arr, n);
  51. return 0;
  52. }
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
Before sorting: 10 7 8 9 1 5 
After sorting: 1 5 7 8 9 10