插入排序作业

Insertion sort homework

本文关键字:作业 插入排序      更新时间:2023-10-16

在输入中,我必须指定数组及其元素,输出应采用下面给出的形式

输入

5
2 4 6 8 3

示例输出

2 4 6 8 8 
2 4 6 6 8 
2 4 4 6 8 
2 3 4 6 8

这是我的输出

2 4 6 8 8
 2 4 6 6 8
 2 4 4 6 8
 2 4 3 6 8
 2 3 3 6 8
 2 3 3 6 8

int main() {    
    int* a=0;
    int n,x;
    std::cout<<"Enter size ";
    std:: cin>>n;
    std::cout<<"Enter elements ";
    a=new int[n];
    for(int i=0;i<n;i++){
        std::cin>>x;
        a[i]=x;
    }
    int q=a[n-1];
    for(int i=n;i>=0;i--){
        if(a[i-2]>q)
        {   a[i-1]=a[i-2];
        }else 
            a[i]=q;
        for(int j=0;j<n;j++ )
        {   std::cout<<a[j];cout<<" ";
        }
        cout<<" n ";
    }
    //for(int j=0;j<n;j++ ){std::cout<<a[j];}
    getch();             
}

我做错了什么?

因为i一直到0.然后i-2可以去-2.因此,此行在数组开头之前进行索引,这是未定义的行为:

    if(a[i-2]>q)

在这里,您正在分配数组中的值,而不记得旧值是什么。

    }else 
        a[i]=q;
因此,

您正在丢失信息,因此某些事情会出错,因为排序不应该破坏信息。