[原创]c#快速排序类
2007-09-11 10:36 Virus-BeautyCode 阅读(700) 评论(0) 编辑 收藏 举报
class QuickSort
{
private void Swap(ref int i, ref int j)
{
int t;
t = i;
i = j;
j = t;
}
public void Sort(int[] list, int low, int high)
{
if (high <= low)
{//only one element i array list
//so it do not need sort
return;
}
else if (high == low + 1)
{
if (list[low] > list[high])
{
Swap(ref list[low], ref list[high]);
return;
}
}
myQuickSort(list, low, high);
}
private void myQuickSort(int[] list, int low, int high)
{
if (low < high)
{
int pivot = Partition(list, low, high);
myQuickSort(list, low, pivot - 1);
myQuickSort(list, pivot + 1, high);
}
}
private int Partition(int[] list, int low, int high)
{
int pivot;
pivot = list[low];
while (low < high)
{
while(low <high&&list[high]>=pivot)
{
high--;
}
if(low!=high)
{
Swap(ref list[low], ref list[high]);
low++;
}
while(low<high&&list[low]<=pivot)
{
low++;
}
if(low!=high)
{
Swap(ref list[low], ref list[high]);
high--;
}
}
return low;
}
}
class Program
{
static void Main(string[] args)
{
QuickSort quick = new QuickSort();
int[] arr = new int[] {4,5,1,9,6,3,2,8,7 };
quick.Sort(arr, 0, 8);
foreach (int a in arr)
{
Console.WriteLine(a);
}
Console.ReadLine();
}
}
{
private void Swap(ref int i, ref int j)
{
int t;
t = i;
i = j;
j = t;
}
public void Sort(int[] list, int low, int high)
{
if (high <= low)
{//only one element i array list
//so it do not need sort
return;
}
else if (high == low + 1)
{
if (list[low] > list[high])
{
Swap(ref list[low], ref list[high]);
return;
}
}
myQuickSort(list, low, high);
}
private void myQuickSort(int[] list, int low, int high)
{
if (low < high)
{
int pivot = Partition(list, low, high);
myQuickSort(list, low, pivot - 1);
myQuickSort(list, pivot + 1, high);
}
}
private int Partition(int[] list, int low, int high)
{
int pivot;
pivot = list[low];
while (low < high)
{
while(low <high&&list[high]>=pivot)
{
high--;
}
if(low!=high)
{
Swap(ref list[low], ref list[high]);
low++;
}
while(low<high&&list[low]<=pivot)
{
low++;
}
if(low!=high)
{
Swap(ref list[low], ref list[high]);
high--;
}
}
return low;
}
}
class Program
{
static void Main(string[] args)
{
QuickSort quick = new QuickSort();
int[] arr = new int[] {4,5,1,9,6,3,2,8,7 };
quick.Sort(arr, 0, 8);
foreach (int a in arr)
{
Console.WriteLine(a);
}
Console.ReadLine();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构