经典排序算法

排序算法总览

冒泡排序

  • 比较相邻两组元素, 如果大就交换。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void FullSort::BubbleSort(int *arr, int length)
{
for (int i = 0; i < length - 1; i++)
{
for (int j = i+1; j < length; j++)
{
if (arr[i] > arr[j])
{
Swap(arr, i, j);
}
}
}
}
void FullSort::Swap(int *arr, int i, int j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

选择排序

  • 默认每次循环一个最小, 对未排序的序列比较找到最小值进行交换
  • 重复上面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void FullSort::SelectSort(int *arr, int length)
{
for (int i = 0; i < length - 1; i++)
{
int min = i;
for (int j = i + 1; j < length; j++)
{
if (arr[j] < arr[min])
{
min = j;
}
}
if (i != min)
{
Swap(arr, i, min);
}
}
}