排序算法目录:
1.插入排序
2.希尔排序
3.选择排序
4.冒泡排序
5.快速排序
6.计数排序
7.堆排序
图解计数排序:
先创建一个数组作为哈希桶,将原数组记录原数组各个数出现的次数,在对应位置上。
如图,遍历数组,2出现了2次,在哈希数组中2号位置+2。
通过哈希数组,反推排序(将哈希数组下标作为数据,将数据作为下标)如上,0号位置是2,那么有2个0。
代码实现:
void CountSort(int* array, int size)//计数排序
{
int i = 0;
int a[10];
int b[20];
for (i = 0; i < 20; i++)
{
b[i] = 0;
}
for (i = 0; i < 10; i++)
{
b[array[i]] += 1;
}
for (i = 1; i < 20; i++)
{
b[i] = b[i] + b[i - 1];
}
for (i = 9; i >= 0; i--)
{
a[b[array[i]] - 1] = array[i];
b[array[i]] -= 1;
}
for (i = 0; i < 10; i++)
{
printf("%d", a[i]);
}
printf("\n");
}