冒泡排序 稳定排序 时间复杂度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 + " ");
}
}