泡泡排序时程序崩溃?

时间:2013-02-13 03:28:51

标签: c++ string bubble-sort

            int sortAtt2,compare=0,counter=0;
            string tempTitle;
            for(int t=0; t<MAX_BOOKS; t++)
            {
                for(int i=0; i<MAX_BOOKS; i++)
                {
                    compare=(books[i+1].bookTitle).compare(books[i].bookTitle);
                    if(compare>0)
                    {
                        tempTitle=books[i].bookTitle;
                        books[i].bookTitle=books[i+1].bookTitle;
                        books[i+1].bookTitle=tempTitle;

                    }
                }
            }

这是我的代码,每当我执行此函数时,程序崩溃。知道为什么吗?我在这里比较两个字符串来冒泡它们。

2 个答案:

答案 0 :(得分:3)

越界访问。您正在books[i+1]计算最多i的循环中访问MAX_BOOKS - 1,即,您正在访问books[MAX_BOOKS] - 一个数字末尾超过MAX_BOOKS的{​​{1}}元素。

答案 1 :(得分:1)

如果您的MAX_BOOKS为8。

Book books[MAX_BOOKS];

你这样循环。

for(int i=0; i<MAX_BOOKS; i++)
{
  books[i+1];
}

i == 7时会发生什么?