选择排序
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
算法稳定性:不稳定
时间复杂度:O(N^2)
空间复杂度:O(1)
#include <stdio.h>
#include <assert.h>
void Swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void SelectSort(int *arr, int size)
{
assert(arr);//判空
int begin = 0;
int end = size - 1;
while (begin < end)
{
int min = begin;
int max = end;
//i应从begin开始 防止第一个数为最大数
//到end结束
for (int i = begin; i <= end; ++i)
{
if (arr[i]>arr[max])
max = i;
if (arr[i]<arr[min])
min = i;
}
if (min != begin)
Swap(&arr[min], &arr[begin]);
if (max == begin)//防止例如如下数组类型
max = min; //9, 2, 5, 4, 3, 6, 8, 7, 1, 0
if (max != end)
Swap(&arr[max], &arr[end]);
begin++;
end--;
}
return;
}
快速排序:https://blog.csdn.net/romantic_c/article/details/79902858
归并排序:https://blog.csdn.net/romantic_c/article/details/79895622
冒泡排序:https://blog.csdn.net/romantic_c/article/details/78278861
计数排序:https://blog.csdn.net/romantic_c/article/details/79898442