Rumah >pembangunan bahagian belakang >C++ >Teknik isihan gabungan dijelaskan dalam C

Teknik isihan gabungan dijelaskan dalam C

WBOY
WBOYke hadapan
2023-09-05 14:05:051081semak imbas

Isih ialah proses menyusun elemen dalam tertib menaik (atau) menurun.

Jenis pengisihan

Bahasa C menyediakan lima teknik pengisihan seperti berikut -

  • Isih gelembung (atau) isihan pertukaran
  • Isihan pilihan
  • Isihan sisipan (atau) Isih Pemisihan Linear
  • Isih Gabungan (atau) Isih Luaran
Isih Gabungan

Isih Gabungan ialah kaedah bahagi dan takluk. Ia membahagikan tatasusunan kepada separuh, menakluk dan menggabungkan (menggabungkannya) secara rekursif.

Mari kita pertimbangkan contoh yang diberikan di bawah -

Ambil tatasusunan yang tidak diisih dan gunakan teknik isihan cantum untuk mengisih tatasusunan. . Teknologi Isih -

Demonstrasi Langsung

#include <stdio.h>
#define max 10
int a[11] = { 10, 14, 19, 26, 27, 31, 33, 35, 42, 44, 0 };
int b[10];
void merging(int low, int mid, int high) {
   int l1, l2, i;
   for(l1 = low, l2 = mid + 1, i = low; l1 <= mid && l2 <= high; i++) {
      if(a[l1] <= a[l2])
         b[i] = a[l1++];
      else
         b[i] = a[l2++];
   }
   while(l1 <= mid)
      b[i++] = a[l1++];
   while(l2 <= high)
      b[i++] = a[l2++];
   for(i = low; i <= high; i++)
      a[i] = b[i];
   }
   void sort(int low, int high) {
      int mid;
      if(low < high) {
         mid = (low + high) / 2;
         sort(low, mid);
         sort(mid+1, high);
         merging(low, mid, high);
      } else {
      return;
   }
}
int main() {
   int i;
   printf("List before sorting</p><p>");
   for(i = 0; i <= max; i++)
   printf("%d ", a[i]);
   sort(0, max);
   printf("</p><p>List after sorting</p><p>");
   for(i = 0; i <= max; i++)
   printf("%d ", a[i]);
}

Output

Teknik isihan gabungan dijelaskan dalam C Apabila melaksanakan program di atas, output berikut dihasilkan -

List before sorting
10 14 19 26 27 31 33 35 42 44 0
List after sorting
0 10 14 19 26 27 31 33 35 42 44

Atas ialah kandungan terperinci Teknik isihan gabungan dijelaskan dalam C. 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