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,我正在准备期末考试,我很难理解下面每行代码的作用。我在理论上理解每种排序是如何工作的,但是,我在理解代码如何完成手头的任务时遇到了问题。我找不到一个清楚的解释。有人能浏览一下下面的每个功能,并评论一下每个比特扮演的角色吗?如果我需要包括完整的计划,这些是一部分,请让我知道。由于篇幅过长,我省略了它们。提前谢谢 void SelectionSort(int numbers[], int array_size) { for (int i = array_size - 1; i > 0; i--

我正在准备期末考试,我很难理解下面每行代码的作用。我在理论上理解每种排序是如何工作的,但是,我在理解代码如何完成手头的任务时遇到了问题。我找不到一个清楚的解释。有人能浏览一下下面的每个功能,并评论一下每个比特扮演的角色吗?如果我需要包括完整的计划,这些是一部分,请让我知道。由于篇幅过长,我省略了它们。提前谢谢

void SelectionSort(int numbers[], int array_size) {
for (int i = array_size - 1; i > 0; i--) {
    int startIndex = 0; //initialization of start index
    for (int j = 1; j <= i; j++)  //i don't understand this line or the next two
        if (numbers[j] > numbers[startIndex])
            startIndex = j;

    int tempIndex = numbers[startIndex]; // these three lines use a temp variable to swap
    numbers[startIndex] = numbers[i];
    numbers[i] = tempIndex;
}

return;
}

void BubbleSort(int numbers[], int array_size) {
for (int outer = (array_size - 1); outer >= 0; outer--) // this line I vaguely understand (need clarification)
    for (int inner = 0; inner < outer; inner++) /* this line I vaguely understand (need clarification)*/
        if (numbers[inner] < numbers[inner + 1]) /*this compares the two values*/ { 
            int tempIndex = numbers[inner]; /* these three lines use a temp variable to swap the value in each location if the above criteria is met*/
            numbers[inner] = numbers[inner + 1];
            numbers[inner + 1] = tempIndex;
        }
return;
}
void SelectionSort(整数[],整数数组大小){
对于(int i=array_size-1;i>0;i--){
int startIndex=0;//开始索引的初始化
对于(int j=1;j选择排序:

选择排序从外部循环开始,使用数组中的最后一个值。然后,它通过内部循环遍历整个数组,找到最大的值,将其索引分配给startIndex变量。然后,它用数组中最大的startIndex值替换最后一个值index i。然后,它将此过程重复一次数组中的所有值。请注意,在内部循环中,jNarrow将您的问题向下延伸到几行代码。如果您要求对每行代码进行完整解释,那么您的位置就错了。您说您从理论上理解了每种排序的工作原理,所以请尝试在伪代码中实现排序,然后尝试将伪代码与此代码匹配。或者如果你认为每一行都是这样做的,那么想想它为什么应该这样做?如果你发现它不应该这样做,再检查一下它是否真的在做你认为它在做的事情。我补充了一些关于我认为每一行都是这样做的评论。我很感谢你的透彻解释。现在对我来说很有意义。谢谢你!很高兴能提供帮助。我真的很高兴我从来没有考虑过外循环是使排序更有效的一种方式,所以对此表示感谢。:)