Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C/C++ untuk pengisihan pariti (pengisihan bata)

Program C/C++ untuk pengisihan pariti (pengisihan bata)

WBOY
WBOYke hadapan
2023-09-14 17:53:021326semak imbas

Program C/C++ untuk pengisihan pariti (pengisihan bata)

Algoritma pengisihan pariti juga dipanggil pengisihan bata, iaitu teknologi pengisihan yang serupa dengan pengisihan gelembung. Teknik pengisihan ini dibahagikan kepada dua fasa: fasa ganjil dan fasa genap, yang dilakukan serentak dalam setiap lelaran sehingga semua elemen diisih.

fasa ganjil teknik pengaturcaraan ini adalah serupa dengan isihan gelembung, tetapi hanya mengisih elemen dengan indeks ganjil.

Begitu juga, fasa genaphanya menyusun elemen dengan indeks genap.

Untuk menggambarkan konsep ini dengan lebih jelas, mari kita ambil contoh:

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

Penjelasan

Isihan genap-ganjil, juga dikenali sebagai isihan bata, ialah teknik pengisihan mudah yang direka bentuk dengan pemprosesan selari. Ia menggunakan perbandingan untuk menyusun elemennya. Perbandingan dibuat antara umur dan unsur untuk semua pasangan ganjil-genap. Jika mana-mana pasangan berada dalam susunan yang salah, tukar tertib untuk menjadikannya betul. Proses ini berterusan sehingga senarai diisih. Memandangkan ia dibangunkan untuk pemprosesan selari, ia boleh memproses satu nilai bagi setiap pemproses dan kedua-dua proses melakukan operasi jenis swap-compare secara serentak. Algoritma ini pada asalnya dicadangkan pada pemproses tersebut dan terbukti cekap pada pemproses tersebut.

Contoh

#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;
         }
      }
   }
}

Output

1234567

Atas ialah kandungan terperinci Program C/C++ untuk pengisihan pariti (pengisihan bata). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam