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

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

WBOY
Lepaskan: 2023-09-14 17:53:02
ke hadapan
1404 orang telah melayarinya

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
Salin selepas log masuk

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;
         }
      }
   }
}
Salin selepas log masuk

Output

1234567
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan