交换排序包括:冒泡排序和快速排序
具体代码如下:
冒泡排序:
/// <summary>
/// 冒泡排序
/// 稳定性:稳定
/// 时间复杂度:O(n2)
/// </summary>
public static int[] BubbleSort(int[] array)
{
int temp = ;
for (int i = ; i < array.Length - ; i++)
{
for (int j = ; j < array.Length - ; j++)
{
if (array[j] < array[j + ])
{
temp = array[j];
array[j] = array[j + ];
array[j + ] = temp;
}
}
}
return array;
}
快速排序:
/// <summary>
/// 快速排序 分治法
/// 稳定性:不稳定
/// 时间复杂度:最理想 O(nlogn) 最差时间O(n^2)
/// </summary>
public static void QuickSort(int[] array, int left, int right)
{
if (left < right)
{
int i = left;
int j = right - ;
int middle = array[(left + right) / ];
while (true)
{
while (i < right && array[i] < middle) { i++; };
while (j > && array[j] > middle) { j--; };
if (i >= j) break;
array[i] = array[i] + array[j];
array[j] = array[i] - array[j];
array[i] = array[i] - array[j];
if (array[i] == array[j]) j--;
}
QuickSort(array, left, i);
QuickSort(array, i + , right);
}
}