插入排序作业
Insertion sort homework
在输入中,我必须指定数组及其元素,输出应采用下面给出的形式
输入
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;
因此,您正在丢失信息,因此某些事情会出错,因为排序不应该破坏信息。
相关文章:
- 这是插入排序的正确实现吗?
- 使用列表 STL 递归进行插入排序
- 列表 iter 不取消引用 使用列表进行插入排序
- 如何使插入排序更快?
- 插入排序的最小交换
- 双链表C++上的插入排序
- 如何在插入排序中使用 replace() 使语句变得不必要
- C++插入排序错误功能不起作用
- 如何在不通过插入排序更改原始矢量的情况下对 2D 矢量进行排序
- 插入排序打印错误的输出
- 从矢量末尾开始的插入排序
- 插入排序:我做错了什么?
- 插入排序的向量<unique_ptr<对时避免堆分配<>>>
- 获取有趣的输出以进行插入排序
- 插入排序算法在放入函数时的行为不同
- 家庭作业的排序链表程序中的分段错误
- 插入排序的Valgrind Invalid读取尺寸8的尺寸
- 插入排序与插入/擦除?(所以我需要对一个向量进行排序,而不是手工做事,而是使用插入和擦除
- 堆排序和插入排序
- 插入排序作业