C#常见排序算法
2023-09-11 14:19:57 时间
目录
1.排序算法比较
2.冒泡排序
public delegate int DelCompare<T>(T t1,T t2);
public static T[] BubbleSort<T>(T[] sortArr, DelCompare<T> delCompare)
{
for (int i = 0; i < sortArr.Length - 1; i++)
{
for (int j = 0; j < sortArr.Length - 1 - i; j++)
{
if(delCompare(sortArr[j],sortArr[j + 1]) > 0)
{
T temp = sortArr[j];
sortArr[j] = sortArr[j + 1];
sortArr[j + 1] = temp;
}
}
}
return sortArr;
}
调用:int[] resultArr = BubbleSortClass.BubbleSort<int>(arr,(t1,t2 ) => t1 - t2);
3.选择排序
public delegate int DelCompare<T>(T t1, T t2);
public static T[] SelectSort<T>(T[] arr, DelCompare<T> delCompare)
{
int min = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
min = i;
for (int j = i + 1; j < arr.Length; j++)
{
if (delCompare(arr[min], arr[j]) > 0)
min = j;
}
T temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
return arr;
}
4.插入排序
public static int[] InsertionSort(int[] arr)
{
for (int i = 1; i < arr.Length; i++)
{
for (int j = i; j > 0; j--)
{
if(arr[j] < arr[j - 1])
{
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
return arr;
}
5.快速排序
public static int[] QuickSort(int[] arr,int left,int right)
{
if(left < right)
{
int point = arr[left];
int i = left;
int j = right;
while(i < j)
{
while (arr[j] > point && i < j)
j--;
arr[i] = arr[j];
while (arr[i] < point && i < j)
i++;
arr[j] = arr[i];
}
arr[i] = point;
QuickSort(arr, left, i - 1);
QuickSort(arr, i + 1, right);
}
return arr;
}
相关文章
- C#-CMD
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- C# Monitor Wait()和Pulse()
- 算法(第四版)C#题解——2.1
- 【C#】WebMethod的用法,aspx、ashx、asmx
- C#,图像二值化(17)——全局阈值的ISODATA算法(亦称作InterMeans法)及其源程序
- C#,核心基础算法——Google CityHash64位与CityHash128位,散列哈希算法源程序
- C#,彩色图转为灰度图的基本原理、快速算法的源代码及转换效果最好的联高算法之简释
- C#,图论与图算法,图颜色问题(MCP,M-coloring problem)的回溯(Backtracking)算法与源代码
- C#,栅栏油漆算法(Painting Fence Algorithm)的源代码
- C#,单向链表(Simply Linked List)快速排序(Quick Sort)算法与源代码
- C#,数据检索算法之跳跃搜索(Jump Search)的源代码
- C#,字符串匹配(模式搜索)Boyer Moore算法的源代码
- C#,码海拾贝(05)——拉格朗日(Lagrange)三点式曲线插值算法,《C#数值计算算法编程》源代码升级改进版
- C#,初学琼林(05)——二分法查找(binary search,二分法搜索)数组内指定值的算法与源代码
- C#多线程教程与案例
- C# MVC站点 (安装SSL证书后) 实现 HTTP自动跳转到 HTTPS的Web.config设置方法
- C#获取CPU编号
- C# 实现抢红包算法
- C#-IO-正由另一进程使用,因此该进程无法访问该文件