Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在选择排序中计算互换数量和比较_C++_Sorting - Fatal编程技术网

C++ 在选择排序中计算互换数量和比较

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

我试图在选择排序中计算交换和比较的数量。 数组=[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 << "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)。