下面为大家详细讲解“C#基础之数组排序、对象大小比较实现代码”的完整攻略。
1. 数组排序
1.1 冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法,它会多次遍历要排序的数列,每次遍历时,它会从头开始比较相邻的两个元素,如果它们的顺序错误就把它们交换过来,直到没有需要交换的元素为止。
以下是冒泡排序的C#代码实现:
public void BubbleSort(int[] arr)
{
int temp = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
1.2 快速排序
快速排序(Quick Sort)是一种基于分治思想的高效排序算法,它的基本思路是先选择一个基准元素,然后将数列中所有小于该基准的元素放在一边,将大于该基准的元素放在另一边,再递归地对两边的子数列进行同样的操作。
以下是快速排序的C#代码实现:
public void QuickSort(int[] arr, int low, int high)
{
if (low >= high)
{
return;
}
int pivot = arr[low];
int i = low, j = high;
while (i < j)
{
while (i < j && arr[j] >= pivot)
{
j--;
}
if (i < j)
{
arr[i++] = arr[j];
}
while (i < j && arr[i] <= pivot)
{
i++;
}
if (i < j)
{
arr[j--] = arr[i];
}
}
arr[i] = pivot;
QuickSort(arr, low, i - 1);
QuickSort(arr, i + 1, high);
}
2. 对象大小比较
2.1 IComparable接口
IComparable接口定义了一个方法CompareTo,该方法接受一个参数,表示要进行比较的另一个对象,返回值为int类型,表示两个对象的大小关系:
- 若对象this大于参数对象obj,则返回正整数。
- 若对象this等于参数对象obj,则返回0。
- 若对象this小于参数对象obj,则返回负整数。
以下是IComparable接口的C#代码示例:
class Employee : IComparable<Employee>
{
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
public int CompareTo(Employee other)
{
// 以薪资作为排序标准
if (this.Salary > other.Salary)
{
return 1;
}
else if (this.Salary < other.Salary)
{
return -1;
}
else
{
return 0;
}
}
}
Employee employee1 = new Employee() { Name = "张三", Age = 30, Salary = 10000 };
Employee employee2 = new Employee() { Name = "李四", Age = 25, Salary = 8000 };
int result = employee1.CompareTo(employee2);
Console.WriteLine(result); //输出1,表示employee1大于employee2
2.2 IComparer接口
IComparer接口定义了一个方法Compare,该方法接受两个参数,表示要比较的两个对象,返回值为int类型,表示两个对象的大小关系:
- 若对象x大于对象y,则返回正整数。
- 若对象x等于对象y,则返回0。
- 若对象x小于对象y,则返回负整数。
以下是IComparer接口的C#代码示例:
class Employee
{
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
}
class CompareBySalary : IComparer<Employee>
{
public int Compare(Employee x, Employee y)
{
if (x.Salary > y.Salary)
{
return 1;
}
else if (x.Salary < y.Salary)
{
return -1;
}
else
{
return 0;
}
}
}
Employee employee1 = new Employee() { Name = "张三", Age = 30, Salary = 10000 };
Employee employee2 = new Employee() { Name = "李四", Age = 25, Salary = 8000 };
CompareBySalary compareBySalary = new CompareBySalary();
int result = compareBySalary.Compare(employee1, employee2);
Console.WriteLine(result); //输出1,表示employee1大于employee2
以上就是“C#基础之数组排序、对象大小比较实现代码”的详细攻略,希望能对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#基础之数组排序、对象大小比较实现代码 - Python技术站