C++ 在选择排序中计算互换数量和比较
我试图在选择排序中计算交换和比较的数量。 数组=[7,-9,-2,17,19,12,8,1,-20,15,3,5]C++ 在选择排序中计算互换数量和比较,c++,sorting,C++,Sorting,我试图在选择排序中计算交换和比较的数量。 数组=[7,-9,-2,17,19,12,8,1,-20,15,3,5] void main() { int size = 12, arr[] = { 7, - 9, - 2, 17, 19, 12, 8, 1, - 20, 15, 3, 5 }; int i, j, temp; int comparison = 0; int swaps = 0; std::cout << "Un
void main()
{
int size = 12, arr[] = { 7, - 9, - 2, 17, 19, 12, 8, 1, - 20, 15, 3, 5 };
int i, j, temp;
int comparison = 0;
int swaps = 0;
std::cout << "Unsorted: ";
for (i = 0; i < size; i++)
{
std::cout << arr[i] << " ";
}
std::cout << "\n";
for (i = 0; i < size; i++)
{
for (j = i + 1; j < size; j++)
{
comparison = comparison + 1;
if (arr[i] > arr[j])
{
swaps = swaps + 1;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
std::cout << "\nComparisons: " << comparison;
std::cout << "\nSwap: " << swaps;
std::cout << "\n\nSorted: ";
for (i = 0; i < size; i++)
{
std::cout << arr[i] << " ";
}
void main()
{
int size=12,arr[]={7、-9、-2、17、19、12、8、1、-20、15、3、5};
int i,j,温度;
整数比较=0;
int-swaps=0;
std::cout在这个很棒的网站上,你可以找到所有不同排序算法的顺序。它说选择排序的最坏情况应该是O(n^2)。你有12个变量;12^2=144,这比你得到的交换和比较的数量要大得多——所以你在最坏情况范围内
但是,如果您想输出所进行的交换,而不是交换的实际数量,您可以编写如下内容:
if (arr[i] > arr[j])
{
std::cout << "Swapping " << arr[i] << " with " << arr[j] << ".\n";
swaps = swaps + 1;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
if(arr[i]>arr[j])
{
std::你得到的数字有问题吗?你期望它们是什么?你显示的代码似乎已经显示了这一点。你的问题是什么?你如何正确计算和输出比较和交换的数量?我也认为你已经这样做了。如果你不相信结果,试着在纸上列出几种3个数字,看看你是否正确t相同的结果。这不是大O表示法的工作方式。对于特定的n值,可以得到大于n^2的数字,但在最坏的情况下仍然是O(n^2)。