sorted = !sorted含义

sorted = !sorted的含义
代码如下

    for (bool sorted = false; sorted = !sorted; n1--) {
        for (int i = 1; i < n1; i++) {
            if (A[i - 1] > A[i]) {
                swap(A[i - 1], A[i]);
                sorted = false;
            }
        }
    }

可以看到,这里用的是但个等号,表示赋值。而在for循环中当前位置应该为一个判断语句。即判断真假,也就是true或者false。
那么这个语句的意思应该是将!sorted的值赋给sorted,接下来判断当前boolean类型的sorted的值为true还是false。
还可以写成这样,亲测,效果相同。
这是代码

         for (bool sorted = false; sorted == false; n1--) {
        sorted = true;
        for (int i = 1; i < n1; i++) {
            if (A[i - 1] > A[i]) {
                swap(A[i - 1], A[i]);
                sorted = false;
            }
        }
        cout << 1;
    }

咳咳,如果我没猜错的话,你是不是在听邓俊晖的课吧~

  • 以下回答由chatgpt基于相关博客总结生成:

    答案:

    首先,sorted函数是一个内置函数,可以对任意可迭代对象进行排序,返回一个新的排好序的列表,而不会修改原来的可迭代对象。 对于所给代码中的!sorted,实际上是将sorted返回的列表再取反,即按照原列表的降序排序,此时在for循环中的!sorted则是一个判断语句,判断是否已降序排序。 因此,!sorted的含义和作用是判断该列表是否已按照降序排好序。

    可以按照以下代码对所给列表进行排序:

    lst = [['1', '2'], ['2', '1'], ['2', '2'], ['4', '4'], ['2', '4'], ['3', '3'], ['2', '5'], ['1', '1'], ['4', '10'], ['1', '3'], ['10', '10'], ['5', '10'], ['3', '5'], ['4', '6'], ['4', '1'], ['8', '8']]
    new_lst = sorted(lst, key=lambda x: (int(x[0]), int(x[1])))
    

    在上述代码中,sorted函数可以对列表lst中的子列表进行排序,关键词参数key是一个函数,指定了排序的规则,这里使用lambda表达式来定义排序规则,按照子列表中第一个元素和第二个元素的数值大小进行排序。那么排序后,new_lst就是按照要求排序后的新列表,可以打印输出观察结果。而且,使用!sorted等价于使用reverse=True,可以对新列表进行反向排序。

    关于代码是否出自邓俊晖老师的课程中,笔者无法证实,也无法较为确切地给出判断。