【发布时间】:2011-04-23 01:51:27
【问题描述】:
以下数组排序的最佳排序技术是什么,如果有重复如何处理它们:
int a= {1,3,6,7,1,2};
还有哪一种是最好的排序技术?
void BubbleSort(int a[], int array_size)
{
int i, j, temp;
for (i = 0; i < (array_size - 1); ++i)
{
for (j = 0; j < array_size - 1 - i; ++j )
{
if (a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
【问题讨论】:
-
没有“最好的排序技术”,这取决于数据的大小以及是否在一开始就进行了排序。我建议您阅读en.wikipedia.org/wiki/… 以及整篇维基百科文章。
-
"best" 取决于数据和其他限制:内存、速度、如何开始排序错误。快速排序是其中的一个很好的折衷方案。冒泡排序最适合小内存。你想完成什么?
-
最好的(如果最好 == 最快的)排序技术是获取已经排序的数据。
-
"后面的数组" = "前面的数组"?如果是的话,最快的就是把它写下来排序。说真的,我在生成的代码中这样做。