Time complexity 选择排序实现时,我一直在计算交换次数的时间复杂性 static int count=0; 对于(int i=0;i

Time complexity 选择排序实现时,我一直在计算交换次数的时间复杂性 static int count=0; 对于(int i=0;i,time-complexity,selection-sort,Time Complexity,Selection Sort,这是选择排序的正确实现吗?我没有得到O(n-1)复杂的交换与此实现 这是选择排序的正确实现吗 这取决于,从逻辑上讲,你所做的是正确的。它使用“查找数组中的最大/最小值”进行排序。但是,在选择排序中,通常在一次迭代中不需要多个交换。您只需将max/min值保存在数组中,然后在最后将其与第i个元素交换 我没有得到O(n-1)的交换复杂性 你是说n-1倍的互换?是的,这是因为您每次交换都会发现一个更大的值,而不仅仅是最大的值。您可以尝试如下方式重写代码: static int count = 0; f

这是选择排序的正确实现吗?我没有得到O(n-1)复杂的交换与此实现

这是选择排序的正确实现吗

这取决于,从逻辑上讲,你所做的是正确的。它使用“查找数组中的最大/最小值”进行排序。但是,在选择排序中,通常在一次迭代中不需要多个交换。您只需将max/min值保存在数组中,然后在最后将其与第i个元素交换

我没有得到O(n-1)的交换复杂性

你是说n-1倍的互换?是的,这是因为您每次交换都会发现一个更大的值,而不仅仅是最大的值。您可以尝试如下方式重写代码:

static int count = 0;
for (int i = 0; i < arr.length; i++) {
    for (int j = i + 1; j < arr.length; j++) {
        if (arr[i] > arr[j]) {
            swap(arr, i, j);
            count++;
        }
    }
}
static int count=0;
静态int最大值=0;
对于(int i=0;i
这是选择排序的正确实现吗

这取决于逻辑上你所做的是正确的。它使用“查找数组中的最大/最小值”进行排序。但是,在选择排序中,通常你不需要在一次迭代中进行多次交换。你只需将最大/最小值保存在数组中,然后在最后将其与第i个元素交换

我没有得到O(n-1)的交换复杂性

你的意思是n-1次交换吗?是的,这是因为你每次交换都会发现一个更大的值,而不仅仅是最大的值。你可以试着像这样重写你的代码:

static int count = 0;
for (int i = 0; i < arr.length; i++) {
    for (int j = i + 1; j < arr.length; j++) {
        if (arr[i] > arr[j]) {
            swap(arr, i, j);
            count++;
        }
    }
}
static int count=0;
静态int最大值=0;
对于(int i=0;i