Isih Buih dalam C

Linda Hamilton
Linda Hamiltonasal
2024-12-03 01:40:14936semak imbas

Isih ialah konsep yang perlu kita pelajari dalam mana-mana bahasa pengaturcaraan. Kebanyakan pengisihan dilakukan pada tatasusunan yang melibatkan nombor dan merupakan batu loncatan untuk menguasai seni teknik untuk melintasi dan mengakses data daripada tatasusunan.
Jenis teknik isihan yang akan kita bincangkan dalam artikel hari ini ialah Bubble Sort.

Isih Buih

Isih buih ialah algoritma pengisihan mudah yang berfungsi dengan menukar elemen bersebelahan berulang kali jika ia dalam susunan yang salah. Kaedah mengisih tatasusunan ini tidak sesuai untuk set data yang besar kerana kerumitan masa untuk senario purata dan kes terburuk adalah sangat tinggi.

Algoritma Isih Buih :

  1. Isih Buih menyusun tatasusunan dengan mengisihnya dalam berbilang pas.
  2. Hantar Pertama: Elemen terbesar bergerak ke kedudukan terakhir, tempatnya yang betul.
  3. Hantar Kedua: Elemen kedua terbesar bergerak ke kedudukan kedua ke terakhir, dan ini berterusan untuk hantaran seterusnya.
  4. Dengan setiap pas, hanya bahagian tatasusunan yang tidak diisih diproses.
  5. Selepas k lulus, elemen k terbesar berada di kedudukan yang betul dalam slot k terakhir.
  6. Semasa setiap pas:
    • Bandingkan elemen bersebelahan dalam bahagian yang tidak diisih.
    • Tukar elemen jika elemen yang lebih besar muncul sebelum yang lebih kecil.
    • Menjelang akhir hantaran, elemen terbesar yang tidak diisih bergerak ke kedudukannya yang betul. Proses ini berulang sehingga keseluruhan tatasusunan diisih.

Bagaimana Bubble Isih Berfungsi?

Di bawah ialah pelaksanaan jenis gelembung. Ia boleh dioptimumkan dengan menghentikan algoritma jika gelung dalam tidak menyebabkan sebarang pertukaran.

// Easy implementation of Bubble sort
#include <stdio.h>
int main(){
    int i, j, size, temp, count=0, a[100];
    //Asking the user for size of array
    printf("Enter the size of array you want to enter = \t");
    scanf("%d", &size);
    //taking the input array through loop
    for (i=0;i<size;i++){
        printf("Enter the %dth element",i);
        scanf("%d",&a[i]);
    }
    //printing the unsorted list
    printf("The list you entered is : \n");
    for (i=0;i<size;i++){
        printf("%d,\t",a[i]);
    }
    //sorting the list
    for (i = 0; i < size - 1; i++) {
        count = 1;
        for (j = 0; j < size - i - 1; j++) {
            if (a[j] > a[j + 1]) {
                //swapping elements
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
                count = 1;
            }
        }

        // If no two elements were swapped by inner loop,
        // then break
        if (count == 1)
            break;
    }
    // printing the sorted list
    printf("\nThe sorted list is : \n");
    for (i=0;i<size;i++){
        printf("%d,\t",a[i]);
    }
    return 0;

}

Output :

**Bubble Sort in C

Analisis Kerumitan Isih Buih:

Kerumitan Masa: O(n2)
Ruang Bantu: O(1)

Kelebihan Bubble Sort:

  • Isih gelembung mudah difahami dan dilaksanakan.
  • Ia tidak memerlukan sebarang ruang memori tambahan.
  • Ia ialah algoritma pengisihan yang stabil, bermakna elemen dengan nilai kunci yang sama mengekalkan susunan relatifnya dalam output yang diisih.

Kelemahan Isih Buih:

  • Isih gelembung mempunyai kerumitan masa O(n2) yang menjadikannya sangat perlahan untuk set data yang besar.
  • Isih gelembung ialah algoritma pengisihan berasaskan perbandingan, yang bermaksud bahawa ia memerlukan pengendali perbandingan untuk menentukan susunan relatif elemen dalam set data input. Ia boleh mengehadkan kecekapan algoritma dalam kes tertentu.

Sila komen jika anda mempunyai sebarang pertanyaan !!
Dan semua perbincangan akan dihargai :)

Atas ialah kandungan terperinci Isih Buih dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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