簡體   English   中英

當我在條件語句中使用相同的值時,為什么我的插入排序算法返回不同的值?

[英]Why does my algorthim for insertion sort return different values , when I use the same value in condition statement?

# 在第一種情況下,我將臨時變量放入 while 循環中的條件語句#

  int tab[8]={0,1,7,8,7,6,5,2};
    int n=8;                
    int j;
    int temp;


    for(int i=1;i<n;i++)
    {
        temp=tab[i];
        j=i-1;

        while(j>=0&&tab[j]>temp)
        {
            tab[j+1]=tab[j];
            --j;    
        }
        tab[j+1] = temp;

    }

我得到的結果是:

0 1 7 8 7 6 5 2
0 1 2 5 6 7 7 8

但另一方面,當我在 while 循環中的條件語句中使用 tab[i] 時

for(int i=1;i<n;i++)
{
    temp=tab[i];
    j=i-1;

    while(j>=0&&tab[j]>tab[i])
    {
        tab[j+1]=tab[j];
        --j;    
    }
    tab[j+1] = temp;

}

我得到這個結果:

0 1 7 8 7 6 5 2
0 1 7 7 6 5 2 8

而且我找不到傳遞這些值與為什么它的行為如此之間的任何區別。 我認為我正在使用相同的值。 這是我在該頁面上的第一個問題,請善待我,祝你有美好的一天

因為在while循環的第一次迭代中 if tab[j] > tab[i]

tab[j+1]=tab[j]; tab[i]更改為tab[i - 1]

所以基本上你在第二種情況下的整個程序相當於這個

#include <iostream>

int main ()
{
    int tab[8]={0,1,7,8,7,6,5,2};
    int n=8;                
    int j;
    int temp;


    for(int i=1;i<n;i++)
    {
        temp=tab[i];
        j=i-1;

        if (tab[j]>tab[i])
        {
            tab[j+1]=tab[j];
            --j;    
        }
        tab[j+1] = temp;

    }

    for(auto&& a: tab) {
        std::cout << a << " ";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM