C# 几种常见的排序方法

时间:2023-03-09 02:47:05
C# 几种常见的排序方法

1.冒泡排序

  //冒泡排序
public void BubbleSort(int[] list)
{
int i, j, temp;
bool done = false;
j = ;
while ((j < list.Length) && (!done))//判断数组的长度
{
done = true;
for (i = ; i < list.Length - j; i++)//利用for循环进行排序
{
if (list[i] > list[i + ])
{
done = false;
temp = list[i];
list[i] = list[i + ];//交换数据
list[i + ] = temp;
}
}
j++;
}
}

2.选择排序

   //选择排序
public void SelectSort(int[] list)
{
for (int i = ; i < list.Length; i++)
{
int min = i;//定义变量并赋值
for (int j = i + ; j < list.Length; j++)
{
if (list[j] < list[min])
min = j;//最小是放在相应的位置
}
//交换数据
int t = list[min];
list[min] = list[i];
list[t] = t;
}
}

3.希尔排序

 public void ShellSort(int[] list)
{
int inc;
for (inc = ; inc <= list.Length / ; inc = * inc + ) ;
for (; inc > ; inc /= )
{
for (int i = inc + ; i <= list.Length; i += inc)
{
int t = list[i - ];
int j = i;
while ((j > inc) && (list[j - inc - ] > t))
{
list[j - ] = list[j - inc - ];//交换数据
j -= inc;
}
list[j - ] = t;
}
}
}

4.插入排序

  public void InsertSort(int[] list)
{
for (int i = ; i < list.Length; i++)
{
int t = list[i];
int j = i;
while ((j > ) && (list[j - ] > t))
{
list[j] = list[j - ]; //交换数据
--j;
}
list[j] = t;
}
}

5.求最大共因子

 int gcd(int u, int v)
{
int r;
while (v != )
{
r = u % v;
u = v;
v = r;
}
return (u);
}