计数排序
应用场景:数据集中在某个范围内
1.统计范围
2.计算用来保存计算空间的大小
range = maxValue - minValue + 1;
3.统计每个元素出现的次数
for(int i = 0;i < size;++i)
{
countArray[array[i] - minValue]++;
}
4.按照计数数组的下标来进行回收
int index = 0;
for(int i = 0;i < range; ++i)
{
while(countArray[i] > 0)
{
array[index} = i + minValue;
countArray[i]--;
}
}free(countArray);
}
归并排序
实际上是一种外部排序
应用场景:数据量非常大无法一次性加载到内存中
假设有100G数据,可使用的内存只有1G
借助辅助空间temp
第一轮:
从Aata读取512M的数据到内存中进行归并排序,然后将排号的结果写入temp
第二轮:
从temp中读取512M到内存中进行归并