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

Chương trình C / C ++ cho Sắp xếp Chẵn lẻ (Xếp gạch)?

Kiếm chẵn lẻ còn được gọi là phân loại gạch là một kỹ thuật phân loại tương tự, giống như phân loại bong bóng. Kỹ thuật sắp xếp này được chia thành 2 giai đoạn pha lẻ và pha chẵn, Cả hai giai đoạn này đồng thời ở mỗi lần lặp cho đến khi tất cả các phần tử được sắp xếp.

Giai đoạn kỳ quặc của kỹ thuật lập trình này hoạt động như một sắp xếp bong bóng nhưng chỉ trên các phần tử có chỉ số lẻ.

Tương tự, giai đoạn chẵn chỉ hoạt động trên các phần tử có chỉ mục chẵn.

Để làm cho khái niệm này rõ ràng hơn, hãy lấy một ví dụ:

Input: a[]={3,5,7,6,1,4,2}
Output: 1 2 3 4 5 6 7

Giải thích

Sắp xếp chẵn-lẻ còn được gọi là sắp xếp gạch, là một kỹ thuật sắp xếp đơn giản được thiết kế lưu ý đến quá trình xử lý song song. Nó sử dụng các phép so sánh để sắp xếp các phần tử của nó. việc so sánh diễn ra trên tất cả các cặp chẵn / lẻ với tuổi và yếu tố của chúng. nếu bất kỳ cặp nào có thứ tự sai thì và Lệnh sẽ được chuyển để làm cho nó đúng. quá trình này tiếp tục cho đến khi danh sách được sắp xếp. vì nó được phát triển cho các quy trình song song, nó có thể tạo ra một giá trị cho mỗi bộ xử lý và cả hai quy trình đều hoạt động đồng thời trên hoạt động kiểu trao đổi-so sánh. Thuật toán này ban đầu được trình bày và được chứng minh là hiệu quả trên các bộ xử lý như vậy

Ví dụ

#include <stdio.h>
#include <math.h>
#define MAX 7
void swap(int *,int *);
void oddeven_sort(int *);
int main() {
   int a[]={3,5,7,6,1,4,2}, i;
   oddeven_sort(a);
   for (i = 0;i < MAX;i++) {
      printf(" %d", a[i]);
   }
}
void swap(int * x, int * y) {
   int temp;
   temp = *x;
   *x = *y;
   *y = temp;
}
void oddeven_sort(int * x) {
   int sort = 0, i;
   while (!sort) {
      sort = 1;
      for (i = 1;i < MAX;i += 2) {
         if (x[i] > x[i+1]) {
            swap(&x[i], &x[i+1]);
            sort = 0;
         }
      }
      for (i = 0;i < MAX - 1;i += 2) {
         if (x[i] > x[i + 1]) {
            swap(&x[i], &x[i + 1]);
            sort = 0;
         }
      }
   }
}

Đầu ra

1234567