【发布时间】:2013-03-17 23:57:14
【问题描述】:
我是编程初学者,只是在玩排序并制作了这个算法。它类似于气泡,但它不是比较相邻的对,而是比较像:第一和第二,第一和第三......第二和第三,第二和第四等等。你能告诉我算法的性能/效率是什么,或者将它与气泡进行比较吗?或者至少建议我如何自己解决问题。我感兴趣的是有多少泡沫比这个更好。谢谢。
void sortArray(int a[]) {
int q, x, temp;
for ( q = 0; q < SIZE - 1; q++ ) {
for ( x = q + 1; x < SIZE; x++ ) {
if (a[q] < a[x]) {
temp = a[q];
a[q] = a[x];
a[x] = temp;
}
}
}
}
【问题讨论】:
-
你测试过你的算法了吗?它真的排序吗?
-
您需要问自己的是:“平均进行了多少次比较”。例如,当从左到右搜索数组中的最大数时,平均检查次数将是列表长度的一半。
-
听起来有点像selection sort。在外循环的第 n 次迭代中,列表的前 n 个元素处于正确位置。不过,您的交换次数更多。在选择排序中,每次外循环迭代只执行一次交换。
标签: performance algorithm sorting bubble-sort memory-efficient