冒泡排序忽略数组的第一个元素

Junaid Khalid |

我当时正在做作业,但不知道为什么气泡排序不起作用。由于某些未知原因,它使数组的第一个元素为零。

#include <iostream>

using namespace std;

int main()
{
    int *arr,s;
    cout<<"Enter the quantity of numbers ";
    cin>>s;
    arr=new int[s];
    for(int i=0;i<s;i++)
    {
        cout<<"Enter number "<<i+1<<" ";
        cin>>*(arr+i);
    }
    int temp;
    for(int j=0;j<s;j++)
    {
        for(int k=0;k<(s-j);k++)
        {
            if(*(arr+k)>*(arr+k+1))
            {
                temp=*(arr+k);
                *(arr+k)=*(arr+k+1);
                *(arr+k+1)=temp;
            }
        }
    }
    for(int x=0;x<s;x++)
    {
        cout<<*(arr+x)<<"\t";
    }
    cout<<endl;
    return 0;
}

输出值

Enter the quantity of numbers 5
Enter number 1 4
Enter number 2 33
Enter number 3 22
Enter number 4 1
Enter number 5 3
0       1       3       4       22

我不知道为什么第一个元素为零。如果我在没有冒泡排序循环的情况下运行它,则它运行得很好,但没有这些循环。

来自莫斯科的弗拉德

在此for循环中

    for(int k=0;k<(s-j);k++)
    {
        if(*(arr+k)>*(arr+k+1))
                      ^^^^^^^ 
        {
            temp=*(arr+k);
            *(arr+k)=*(arr+k+1);
            *(arr+k+1)=temp;
        }

j等于0k等于时,试图在数组之外进行tp访问内存s - 1在这种情况下k + 1等于,s尽管索引的有效范围是[0, s-1]

至少按照以下方式更改循环

for(int j=0;j<s;j++)
{
    for(int k = 1;k<(s-j);k++)
    {
        if(*(arr+k) < *(arr+k-1))
        {
            int temp=*(arr+k);
            *(arr+k)=*(arr+k-1);
            *(arr+k-1)=temp;
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Elasticsearch按数组的第一个元素排序

冒泡排序忽略最后一个元素

计算使用冒泡排序之类算法对第一个k个最小元素进行排序的交换次数

当我使用冒泡排序时,为什么我的数组中的值最高的数字成为第一个元素?

数组第一个元素

如何将两个数组排序在一起,其中第一个数组使用冒泡排序进行排序?

冒泡排序问题,第一个值未正确排序

比较数组和排序的数组,选择第一个元素

对第一个数字按降序对文件中的数字进行冒泡排序

如何对基于数组的文档进行排序并仅返回结果的第一个元素

通过数组的第一个元素排序SELECT?

JS返回已排序的二维数组的第一个元素

按第一个元素对字符串数组列表进行排序

Python:基于第一个元素对数组中的元组进行排序

数组中第一个元素较小的快速排序

在CSS排序后定位第一个元素

ArrayList <String []>排序第一个元素

为什么在排序数组的第一个元素中得到一个随机数?

查找排序数组中元素的第一个和最后一个位置

PHP 多维数组排序在第一个位置保留一个元素值

按第一个键值对javascript数组排序

替换数组的第一个 `m` 个元素

Javascript - 计算多维数组的第一个元素

查找包含“-”的数组的第一个元素

for循环未处理数组的第一个元素

如何按数组的第一个元素分组?

JS减少丢失数组的第一个元素

显示第一个数组元素 - ReactJS

指向数组第一个元素之前的指针