Viết chương trình C để sắp xếp mảng dùng con trỏ

Các bước thực hiện để viết chương trình C:

  • Khai báo hàm sortArray có tham số là 1 mảng con trỏ số nguyên và kích thước của mảng. Hàm chịu trách nhiệm sắp xếp mảng theo thứ tự tăng dần.
    • Bên trong hàm sortArray, bắt đầu một vòng lặp từ i = 0 đến size - 1 để lặp qua từng phần tử của mảng.
    • Bên trong vòng lặp đầu tiên, bắt đầu một vòng lặp khác từ j = i + 1 đến size để so sánh từng phần tử với các phần tử tiếp theo.
    • Trong vòng lặp thứ hai, kiểm tra xem phần tử hiện tại có lớn hơn phần tử tiếp theo hay không bằng cách so sánh *(arr + i) và *(arr + j).
    • Nếu các phần tử không đúng thứ tự, hãy hoán đổi chúng bằng cách sử dụng biến tạm thời temp để lưu trữ giá trị của *(arr + i) trước khi hoán đổi.
    • Sau khi hoàn thành các vòng lặp, mảng sẽ được sắp xếp theo thứ tự tăng dần.
  • Trong hàm main, khai báo một mảng số nguyên arr và khởi tạo mảng với một số giá trị.
  • Tính toán kích thước của mảng bằng cách sử dụng sizeof(arr) / sizeof(arr[0]) và lưu trữ nó ở kích thước thay đổi.
  • In các phần tử của mảng trước khi sắp xếp bằng cách lặp qua mảng bằng một vòng lặp và in *(arr + i).
  • Gọi hàm sortArray để sắp xếp mảng bằng cách chuyển mảng và kích thước làm đối số.
  • In các phần tử của mảng sau khi sắp xếp bằng cùng một vòng lặp và in *(arr + i).
  • Cuối cùng, trả về 0 để cho biết thực hiện chương trình thành công.

Code tham khảo của chương trình C:

#include <stdio.h>
/* Write a program that sorts an array of integers
in ascending order using pointers.
*/
void sortArray(int *arr, int size)
{
// Iterate through each element of the array
for (int i = 0; i < size - 1; i++)
{
// Compare each element with the subsequent elements
for (int j = i + 1; j < size; j++)
{
// Swap the elements if they are out of order
if (*(arr + i) > *(arr + j))
{
int temp = *(arr + i);
*(arr + i) = *(arr + j);
*(arr + j) = temp;
}
}
}
}

int main()
{
int arr[] = {9, 5, 2, 7, 1};
int size = sizeof(arr) / sizeof(arr[0]);

printf("Before sorting: ");
for (int i = 0; i < size; i++)
{
printf("%d ", *(arr + i));
}
printf("\n");

// Call the sortArray function
sortArray(arr, size);

printf("After sorting: ");
for (int i = 0; i < size; i++)
{
printf("%d ", *(arr + i));
}
printf("\n");

return 0;
}