Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan algoritma isihan gelembung dalam C#

Bagaimana untuk melaksanakan algoritma isihan gelembung dalam C#

PHPz
PHPzasal
2023-09-19 11:10:491481semak imbas

Bagaimana untuk melaksanakan algoritma isihan gelembung dalam C#

Cara melaksanakan algoritma isihan gelembung dalam C#

Isih gelembung ialah algoritma isihan yang mudah tetapi berkesan yang menyusun tatasusunan dengan membandingkan elemen bersebelahan beberapa kali dan bertukar-tukar kedudukan. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan algoritma isihan gelembung menggunakan bahasa C# dan memberikan contoh kod khusus.

Pertama, mari kita fahami prinsip asas jenis gelembung. Algoritma bermula dengan elemen pertama tatasusunan dan membandingkannya dengan elemen seterusnya. Jika elemen semasa lebih besar daripada elemen seterusnya, tukar kedudukan mereka jika elemen semasa lebih kecil daripada elemen seterusnya, pastikan kedudukan mereka tidak berubah. Algoritma kemudiannya meneruskan untuk membandingkan elemen bersebelahan seterusnya sehingga keseluruhan tatasusunan diisih.

Berikut ialah contoh kod untuk melaksanakan algoritma isihan gelembung dalam C#:

public static void BubbleSort(int[] array)
{
    int n = array.Length;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            if (array[j] > array[j + 1])
            {
                // 交换元素的位置
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

Dalam kod di atas, kami mentakrifkan kaedah statik bernama BubbleSort, yang menerima tatasusunan integer sebagai parameter input . Mula-mula, kita mendapat panjang tatasusunan dan lelaran ke atas tatasusunan menggunakan dua gelung bersarang. Gelung luar mengawal bilangan pusingan yang perlu dibandingkan, manakala gelung dalam melakukan perbandingan dan pertukaran kedudukan antara elemen bersebelahan. BubbleSort的静态方法,该方法接受一个整数数组作为输入参数。首先,我们获取数组的长度,并使用两个嵌套的循环遍历数组。外部循环控制需要进行比较的轮数,而内部循环执行相邻元素之间的比较和位置交换。

在内部循环中,我们使用if语句来检查当前元素是否大于下一个元素。如果是,则交换它们的位置。通过这种方式,每一轮循环结束后,最大的元素都会被移动到数组的末尾。内部循环重复执行,直到整个数组被排序。

接下来,我们可以利用上述代码对一个整数数组进行排序。例如:

int[] numbers = { 64, 34, 25, 12, 22, 11, 90 };
BubbleSort(numbers);
Console.WriteLine("排序后的数组:");
foreach (int number in numbers)
{
    Console.Write(number + " ");
}

以上代码中,我们创建了一个整数数组numbers,并将一些随机的整数存储在其中。然后,我们调用BubbleSort方法对该数组进行排序。最后,我们使用foreach

Dalam gelung dalam, kami menggunakan pernyataan if untuk menyemak sama ada elemen semasa lebih besar daripada elemen seterusnya. Jika ya, tukar kedudukan mereka. Dengan cara ini, selepas setiap pusingan gelung, elemen terbesar dialihkan ke penghujung tatasusunan. Gelung dalaman berulang sehingga keseluruhan tatasusunan diisih.

Seterusnya, kita boleh menggunakan kod di atas untuk mengisih tatasusunan integer. Contohnya:

rrreee

Dalam kod di atas, kami mencipta tatasusunan integer nombor dan menyimpan beberapa integer rawak di dalamnya. Kemudian, kami memanggil kaedah BubbleSort untuk mengisih tatasusunan. Akhir sekali, kami menggunakan foreach untuk mengulung tatasusunan dan mencetak hasil yang diisih. 🎜🎜Kerumitan masa algoritma isihan gelembung ialah O(n^2), dengan n ialah panjang tatasusunan. Walaupun algoritma isihan gelembung bukanlah algoritma isihan yang paling cekap, ia adalah asas untuk memahami algoritma isihan dan masih boleh berguna dalam situasi tertentu. 🎜🎜Semoga contoh dan arahan kod di atas dapat membantu anda memahami cara melaksanakan algoritma isihan gelembung dalam C#. Dengan mempraktikkan dan menguasai algoritma ringkas dan klasik ini, anda akan dapat memahami dengan lebih baik prinsip kerja algoritma pengisihan, dan dapat memilih algoritma pengisihan yang lebih sesuai berdasarkan keperluan sebenar. 🎜

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma isihan gelembung 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