我想用下面的代码进行排序的数组: -插入排序打印输出错误
预期的输出应该是被按升序排序的数组。
但是,当我试图运行这段代码输出出来是59(6次)
我曾尝试调试它在第一数组声明增加了一个表,并增加了断点的第一个for循环它给出来的错误是: -
->->error-begin
A syntax error in expression, near `A[6]={31,41,59,26,41,58}'.
#include<iostream>
using namespace std;
int main()
{
int A[6]={31,41,59,26,41,58};;
int j;
int length = 6;
for(j=2;j<length;j++)
{
int key;
key = A[j];
int i;
i=j-1;
while(i>0 && A[i]>key)
{
A[i+1]=A[i];
i=i-1;
}
A[i+1]=key;
cout<<A[j];
}
return 0;
}
更新:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int A[6] = { 31, 41, 59, 26, 41, 58 };
int temp;
int j;
int length = 6;
for (j = 2; j < length; j++) {
int key;
key = A[j];
int i;
i = j - 1;
while (i > 0 && A[i] > key) {
temp = A[i + 1];
A[i + 1] = A[i];
A[i] = temp;
i = i - 1;
}
A[i + 1] = key;
}
cout << A[j];
return 0;
}
它的工作应该是像冒泡排序我不知道
std::sort(std::begin(A), std::end(A));
但我很好奇为什么这段代码不工作,我已经尝试查找维基和其他网站的类似代码,但我似乎无法找到任何相关的。
在'A [1 + 1]'时执行恰好值什么'A [1 + 1] = A [1];'? – Pontifex
***但我很好奇为什么这个代码不工作***为什么你不使用你的调试器。我的意思是逐行浏览代码,查看你的变量。 – drescherjm
@Pontifex它应该交换我已经采取的代码从介绍算法CLRS –