冒泡排序 稳定排序算法 时间复杂度o(n2) 空间复杂度o(1)
点击查看代码
static void BubbleSort()
{
int[] data = { 1, 8, 5, 7, 9, 4, 6, 99, 88, 74 };
int i, j, flag;//岗哨模式的冒泡排序
for (i = data.Length - 1; i > 0; i--)
{
flag = 0;
for (j = 0; j < i; j++)
{
if (data[j] > data[j + 1])
{
data[j] = data[j] ^ data[j + 1];
data[j + 1] = data[j] ^ data[j + 1];
data[j] = data[j] ^ data[j + 1];
flag++;
}
}
if (flag == 0)
{
break;
}
}
foreach (int da in data)
{
Console.Write(da + " ");
}
}
选择排序 不稳定排序算法 时间复杂度o(n2) 空间复杂度o(1)
点击查看代码
static void SelectionSort()
{
int[] data = { 1, 8, 5, 7, 9, 4, 6, 99, 88, 74 };
int i, j, flag;//岗哨模式的冒泡排序
for (i = 0; i < data.Length - 1; i++)
{
for (j = i + 1; j < data.Length; j++)
{
if (data[i] > data[j])
{
data[i] = data[i] ^ data[j];
data[j] = data[i] ^ data[j];
data[i] = data[i] ^ data[j];
}
}
}
foreach (int da in data)
{
Console.Write(da + " ");
}
}
插入排序 稳定排序 时间复杂度o(n2) 空间复杂度o(1)
点击查看代码
static void InsertionSort()
{
int[] data = { 1, 8, 5, 7, 9, 4, 6, 99, 88, 74 };
int i, j, temp;
for (i = 1; i < data.Length; i++)
{
temp = data[i];
j = i - 1;
while (j >= 0 && data[j] > temp)
{
data[j + 1] = data[j];
j--;
}
data[j + 1] = temp;
}
foreach (int da in data)
{
Console.Write(da + " ");
}
}
希尔排序 稳定排序算法 改进版的插入排序 时间复杂度o(n3/2) 空间复杂度o(1)
写法一
static void ShellSort()
{
int[] data = { 1, 8, 5, 7, 9, 4, 6, 99, 88, 74 };
int i, j, temp;
int jmp = data.Length / 2;//递增量
while (jmp != 0)
{
for (i = jmp; i < data.Length; i++)
{
temp = data[i];
j = i - jmp;
while (j >= 0 && data[j] > temp)
{
data[j + jmp] = data[j];
j = j - jmp;
}
data[j + jmp] = temp;
}
jmp = jmp / 2;
}
foreach (int da in data)
{
Console.Write(da + " ");
}
}
写法二
static void ShellSort2()
{
int[] data = { 1, 8, 5, 7, 9, 4, 6, 99, 88, 74 };
for (int gap = data.Length / 2; gap > 0; gap /= 2)
{
for (int i = gap; i < data.Length; i++)
{
int temp = data[i];
int j = i - gap;
while (j >= 0 && data[j] > temp)
{
data[j + gap] = data[j];
j = j - gap;
}
data[j + gap] = temp;
}
}
foreach (int da in data)
{
Console.Write(da + " ");
}
}
合并排序(归并排序) 稳定排序算法 时间复杂度O(nlogn) 空间复杂度O(n)
快速排序 不稳定排序算法 时间复杂度O(log2n) 空间复杂度O(n)