第一个元素在插入排序期间未排序
The 1st element doesn't get sorted during insertion sort
#include <stdio.h>
#include <conio.h>
int main()
{
int a[6] = {5,2,4,6,1,3};
int j,i,k,cnt=1;
for (j=1;j<7;j++)
{
k = a[j];
i = j-1;
while(i>0 && a[i]>k)
{
a[i+1] = a[i];
i = i-1;
}
a[i+1] = k;
}
for(i=0;i<6;i++)
{
printf("n Final op %d",a[i]);
}
getch();
}
我正在传递静态数组中的一些元素,但第一个元素是值
a[0]
没有排序,但从a[1]
到a[5]
的其余值被排序
问题是>0
while(i>0
应改为
while(i>=0
此外,在
k = a[j];
当j==6
.
while(i>-1 && a[i]>k)
{
a[i+1] = a[i];
i = i-1;
}
只需进行此更改,您的插入排序即可完美运行。
它没有被排序,因为数组从 a[0] n 开始,当它在 a[0] 时被终止,所以不访问它的元素。
希望对您有所帮助
相关文章:
- 这是插入排序的正确实现吗?
- 使用列表 STL 递归进行插入排序
- 列表 iter 不取消引用 使用列表进行插入排序
- 如何使插入排序更快?
- 插入排序的最小交换
- 双链表C++上的插入排序
- 如何在插入排序中使用 replace() 使语句变得不必要
- C++插入排序错误功能不起作用
- 如何在不通过插入排序更改原始矢量的情况下对 2D 矢量进行排序
- 插入排序打印错误的输出
- 从矢量末尾开始的插入排序
- 插入排序:我做错了什么?
- 插入排序的向量<unique_ptr<对时避免堆分配<>>>
- 获取有趣的输出以进行插入排序
- 插入排序算法在放入函数时的行为不同
- 插入排序的Valgrind Invalid读取尺寸8的尺寸
- 插入排序与插入/擦除?(所以我需要对一个向量进行排序,而不是手工做事,而是使用插入和擦除
- 堆排序和插入排序
- 计数Heapsort和插入排序中的复制和比较数
- 寻找c++快速排序/插入排序组合中的错误