Rumah >pembangunan bahagian belakang >Tutorial C#.Net >Bagaimana untuk menulis algoritma isihan radix menggunakan C#
Cara menggunakan C# untuk menulis algoritma isihan radix
Pengenalan:
Radix Sort ialah algoritma isihan bukan perbandingan yang sesuai untuk mengisih integer. Idea asasnya adalah untuk mengisih unsur-unsur yang hendak diisih dari rendah ke tinggi untuk mendapatkan urutan yang teratur. Berbanding dengan algoritma pengisihan lain, pengisihan radix mempunyai kerumitan dan kestabilan masa yang lebih rendah.
Langkah pelaksanaan:
Contoh kod:
Berikut ialah contoh kod algoritma isihan radix yang ditulis dalam C#:
using System; public class RadixSort { public static void Sort(int[] array) { int max = GetMaxValue(array); int digits = GetDigits(max); for (int i = 0; i < digits; i++) { CountingSort(array, i); } } private static int GetMaxValue(int[] array) { int max = array[0]; for (int i = 1; i < array.Length; i++) { if (array[i] > max) { max = array[i]; } } return max; } private static int GetDigits(int number) { int digits = 0; while (number > 0) { number /= 10; digits++; } return digits; } private static void CountingSort(int[] array, int digit) { int[] count = new int[10]; int[] sortedArray = new int[array.Length]; for (int i = 0; i < array.Length; i++) { int digitValue = GetDigitValue(array[i], digit); count[digitValue]++; } for (int i = 1; i < count.Length; i++) { count[i] += count[i - 1]; } for (int i = array.Length - 1; i >= 0; i--) { int digitValue = GetDigitValue(array[i], digit); int index = count[digitValue] - 1; sortedArray[index] = array[i]; count[digitValue]--; } for (int i = 0; i < array.Length; i++) { array[i] = sortedArray[i]; } } private static int GetDigitValue(int number, int digit) { for (int i = 0; i < digit; i++) { number /= 10; } return number % 10; } } public class Program { public static void Main(string[] args) { int[] array = { 170, 45, 75, 90, 802, 24, 2, 66 }; Console.WriteLine("Before sorting:"); foreach (int num in array) { Console.Write(num + " "); } RadixSort.Sort(array); Console.WriteLine(" After sorting:"); foreach (int num in array) { Console.Write(num + " "); } } }
Hasil berjalan:
Before sorting: 170 45 75 90 802 24 2 66 After sorting: 2 24 45 66 75 90 170 802
Ringkasan:
Algoritma isihan radix ialah algoritma pengisihan yang agak cekap yang boleh melakukan operasi pada integer tatasusunan Isih pantas. Dengan mengisih tatasusunan untuk diisih dari rendah ke tinggi, tatasusunan tertib akhirnya diperolehi. Apabila menggunakan C# untuk menulis algoritma pengisihan radix, kita perlu terlebih dahulu mencari nilai maksimum dan bilangan digit tatasusunan yang hendak diisih, kemudian mengira dan mengisih setiap digit, dan akhirnya menggabungkan semula tatasusunan yang diisih untuk mendapatkan hasil tersusun. Seperti yang dapat dilihat daripada hasil larian kod sampel, algoritma isihan radix boleh mengisih tatasusunan dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma isihan radix menggunakan C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!