Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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

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++ 我能';在该选择排序的逻辑中找不到错误。它以相同的顺序打印出默认数组 intarr[]={22,0,45,32,12,78,89}; int size=sizeof(arr)/sizeof(arr[0]); cout_C++_Sorting - Fatal编程技术网

C++ 我能';在该选择排序的逻辑中找不到错误。它以相同的顺序打印出默认数组 intarr[]={22,0,45,32,12,78,89}; int size=sizeof(arr)/sizeof(arr[0]); cout

C++ 我能';在该选择排序的逻辑中找不到错误。它以相同的顺序打印出默认数组 intarr[]={22,0,45,32,12,78,89}; int size=sizeof(arr)/sizeof(arr[0]); cout,c++,sorting,C++,Sorting,“” intarr[]={22,0,45,32,12,78,89}; int size=sizeof(arr)/sizeof(arr[0]); 您知道什么是temp返回还是不返回?您从不打印temp,也不打印arr2的元素。打印arr的元素,这些元素从不更新,因此当然会保留其原始值。临时值正在更新。通过比较,不是吗?是的,但您没有打印temp,也没有打印任何可能影响temp的值。是的,我知道了,我已经更新了问题。当前代码应该打印arr尾部的最小元素,从位置i开始。它应该打印两次0,然后打印三次1

“”

intarr[]={22,0,45,32,12,78,89};
int size=sizeof(arr)/sizeof(arr[0]);

您知道什么是
temp
返回还是不返回?您从不打印
temp
,也不打印
arr2
的元素。打印
arr
的元素,这些元素从不更新,因此当然会保留其原始值。临时值正在更新。通过比较,不是吗?是的,但您没有打印
temp
,也没有打印任何可能影响
temp
的值。是的,我知道了,我已经更新了问题。当前代码应该打印
arr
尾部的最小元素,从位置
i
开始。它应该打印两次0,然后打印三次12,然后打印78和89。这不是你所期望的吗?这不是你所观察到的吗?这不是选择排序的工作方式,但至少你正在做类似排序的事情。我知道它是如何工作的,现在我自己编写了一个代码来演示。如果你的问题标题是实际目标,那么你可能会建议做什么更改?实际上进行选择排序将是一个好的开始。选择排序不是关于记住“最大”或“最小”值是什么;这是关于记住在哪里找到它。虽然是O(N^2)算法,但对于N个长度的序列,选择排序最多会触发(N-1)次交换。老实说,这是该算法唯一可弥补的特性之一。如果基础数据类型比较便宜,但交换昂贵,并且序列相当短,则选择排序可能是一个可行的选项。因此,您希望交换指针而不是实际值。时间复杂性在这里是一个问题,我理解,但它将以给定列表的顺序结束。
int arr[]={22,0,45,32,12,78,89};

int size= sizeof(arr)/sizeof(arr[0]);

cout<<size<<endl;


for(int i=0;i<size;i++){
    int temp =arr[i];
    if (temp>arr[j]){
        temp=arr[j];
        arr[j]=arr[i];
        arr[i]=temp;
        
        }
        
    }
    cout<<arr[i]<<endl;
}
}