Computer >> Máy Tính >  >> Lập trình >> lập trình C

C Chương trình sắp xếp bong bóng đệ quy


Bubble Sort là một trong những thuật toán sắp xếp đơn giản nhất được sử dụng để sắp xếp dữ liệu bằng cách so sánh các phần tử liền kề. Tất cả các yếu tố được so sánh trong các giai đoạn. Giai đoạn đầu đặt giá trị lớn nhất ở cuối, giai đoạn thứ hai đặt phần tử lớn thứ hai ở vị trí cuối cùng thứ hai và cứ tiếp tục như vậy cho đến khi danh sách đầy đủ được sắp xếp.

Thuật toán sắp xếp bong bóng

  • int arr [5] ={5,4,2,1,3};

  • int i, j;

  • Chuyển từ chỉ mục i =0 sang i

    • Chuyển từ chỉ số j =0 sang kích thước mảng - i - 1

    • Nếu arr [i]> arr [j] hoán đổi arr [i] với arr [j]

  • Kết thúc

Sắp xếp bong bóng đệ quy

  • Nếu độ dài mảng là 1 thì trả về

  • Duyệt mảng một lần và cố định phần tử lớn nhất ở cuối

  • Thực hiện đệ quy bước 2 cho phần còn lại của mảng ngoại trừ phần tử cuối cùng

Ví dụ

Đầu vào - Arr [] ={5,7,2,3,1,4}; chiều dài =6

Đầu ra - Mảng đã sắp xếp:1 2 3 4 5 7

Giải thích -

 Lần đầu tiên 5 7 2 3 1 4 → hoán đổi → 5 2 7 3 1 45 2 7 3 1 4 → hoán đổi → 5 2 3 7 1 45 2 3 7 1 4 → hoán đổi → 5 2 3 1 7 45 2 3 1 7 4 → hoán đổi → 5 2 3 1 4 7 Vé thứ hai 5 2 3 1 4 7 → hoán đổi → 2 5 3 1 4 72 5 3 1 4 7 → hoán đổi → 2 3 5 1 4 72 3 5 1 4 7 → hoán đổi → 2 3 1 5 4 72 3 1 5 4 7 → hoán đổi → 2 3 1 4 5 7 Chuyền thứ 2 3 1 4 5 7 → hoán đổi → 2 1 3 4 5 72 1 3 4 5 7 không hoán đổi Thẻ thứ 42 1 3 4 5 7 → hoán đổi → 1 2 3 4 5 71 2 3 4 5 7 không hoán đổi trong các lần lặp tiếp theo 

Đầu vào - Arr [] ={1, 2, 3, 3, 2};

Đầu ra - Mảng đã sắp xếp:1 2 2 3 3

Giải thích -

 First Pass1 2 3 3 2 → swap → 1 2 3 2 31 2 3 2 3 → swap → 1 2 2 3 31 2 2 3 3 không hoán đổi trong các lần lặp tiếp theo Pass thứ hai1 2 2 3 3 không hoán đổi trong các lần lặp tiếp theo  

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Trong cách tiếp cận đệ quy của sắp xếp bong bóng, trường hợp cơ sở là độ dài mảng =1. Nếu không, hãy duyệt qua mảng bằng cách sử dụng vòng lặp for đơn và hoán đổi các phần tử cho phù hợp.

  • Lấy mảng đầu vào Arr [] và độ dài là số phần tử trong đó.

  • Hàm recurbublSort (int arr [], int len) nhận mảng và độ dài của nó và sắp xếp đệ quy mảng bằng cách sử dụng sắp xếp bong bóng.

  • Thực hiện một nhiệt độ thay đổi.

  • Nếu độ dài mảng là 1 thì trả về void.

  • Khác lướt qua mảng bằng vòng lặp for đơn và đối với mỗi phần tử arr [i]> arr [i + 1], hãy hoán đổi các phần tử đó.

  • Đặt temp =arr [i], arr [i] =arr [i + 1] và arr [i + 1] =temp.

  • Bây giờ độ dài giảm đi 1 khi vòng lặp trước đặt phần tử lớn nhất ở vị trí cuối cùng.

  • Thực hiện một cuộc gọi đệ quy tới recurbublSort (arr, len).

  • Khi kết thúc tất cả các lệnh gọi, khi len trở thành 1, chúng ta sẽ thoát ra khỏi đệ quy và mảng sẽ được sắp xếp.

  • In mảng đã sắp xếp bên trong main.

Ví dụ

 #include  void recurbublSort (int arr [], int len) {int temp; if (len ==1) {return; } for (int i =0; i  arr [i + 1]) {temp =arr [i]; arr [i] =arr [i + 1]; arr [i + 1] =tạm thời; }} len =len-1; recurbublSort (arr, len);} int main () {int Arr [] ={21, 34, 20, 31, 78, 43, 66}; int length =sizeof (Arr) / sizeof (Arr [0]); recurbublSort (Arr, chiều dài); printf ("Mảng đã sắp xếp:"); for (int i =0; i  

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

 Mảng đã sắp xếp:20 21 31 34 43 66 78