Vấn đề
Các kỹ thuật sắp xếp khác nhau trong Ngôn ngữ C là gì? Giải thích bất kỳ một kỹ thuật sắp xếp nào bằng một ví dụ.
Giải pháp
Ngôn ngữ C cung cấp năm kỹ thuật sắp xếp như sau -
- Sắp xếp bong bóng (hoặc) Sắp xếp trao đổi.
- Sắp xếp lựa chọn.
- Sắp xếp chèn (hoặc) Sắp xếp tuyến tính.
- Sắp xếp nhanh (hoặc) Sắp xếp trao đổi phân vùng.
- Sắp xếp Hợp nhất (hoặc) Sắp xếp bên ngoài.
Sắp xếp bong bóng
Đây là kỹ thuật sắp xếp đơn giản nhất còn được gọi là sắp xếp trao đổi.
Quy trình
-
So sánh phần tử đầu tiên với các phần tử còn lại trong danh sách và trao đổi (hoán đổi) chúng nếu chúng không theo thứ tự.
-
Lặp lại tương tự cho các phần tử khác trong danh sách cho đến khi tất cả các phần tử được sắp xếp.
30 50 40 10 20
Hãy xem xét các yếu tố được đưa ra bên dưới -
Thẻ đầu tiên
So sánh phần tử đầu tiên với các phần tử còn lại.
a [0]> a [1] $ \ square $ $ \ square $ 30> 50 (F) $ \ square $ $ \ square $ không trao đổi
a [0]> a [2] $ \ square $ $ \ square $ 30> 40 (F) $ \ square $ $ \ square $ không trao đổi
a [0]> a [3] $ \ square $ $ \ square $ 30> 10 (T) $ \ square $ $ \ square $ Exchange
a [0]> a [4] $ \ square $ $ \ square $ 10> 20 (F) $ \ square $ $ \ square $ không trao đổi
10 50 40 30 20
Thẻ thứ hai
So sánh phần tử thứ hai với các phần tử còn lại.
a [1]> a [2] $ \ square $ $ \ square $ 50> 40 (T) $ \ square $ $ \ square $ Exchange
a [1]> a [3] $ \ square $ $ \ square $ 40> 30 (T) $ \ square $ $ \ square $ Exchange
a [1]> a [4] $ \ square $ $ \ square $ 30> 20 (T) $ \ square $ $ \ square $ Exchange
10 20 50 40 30
Thẻ thứ ba
So sánh phần tử thứ ba với các phần tử còn lại.
a [2]> a [3] $ \ square $ $ \ square $ 50> 40 (T) $ \ square $ $ \ square $ Exchange
a [2]> a [4] $ \ square $ $ \ square $ 40> 30 (T) $ \ square $ $ \ square $ Exchange
10 20 30 50 40
Thẻ thông hành thứ tư
So sánh phần tử thứ tư với các phần tử còn lại.
a [3]> a [4] $ \ square $ $ \ square $ 50> 40 (T) $ \ square $ $ \ square $ Exchange
10 20 30 40 50
Quy trình
Tham khảo quy trình sắp xếp bong bóng như được đưa ra bên dưới -
for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++){ if (a[i] > a[j]){ t=a[i]; a[i] = a[j]; a[j] = t; } } }
Ví dụ
Sau đây là chương trình C cho kỹ thuật phân loại bong bóng -
#include<stdio.h> int main(){ int a[50], i,j,n,t; printf("enter the No: of elements in the list:\n"); scanf("%d", &n); printf("enter the elements:\n"); for(i=0; i<n; i++){ scanf ("%d", &a[i]); } printf("Before bubble sorting the elements are:\n"); for(i=0; i<n; i++) printf("%d \t\n", a[i]); for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++){ if (a[i] > a[j]){ t = a[i]; a[i] = a[j]; a[j] = t; } } } printf ("after bubble sorting the elements are:\n"); for (i=0; i<n; i++) printf("%d\t", a[i]); return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
enter the No: of elements in the list: 5 enter the elements: 12 11 45 26 67 Before bubble sorting the elements are: 12 11 45 26 67 after bubble sorting the elements are: 11 12 26 45 67