C++ 插入排序任务

C++ 插入排序任务,c++,sorting,insertion-sort,C++,Sorting,Insertion Sort,我试图解决一个问题,在这个问题中,我应该对数组中的数字进行排序,而不是从排序后的数组中提取前k个数字,并消除那些重复的数字,然后将它们写入输出 这是我的代码: #include <iostream> using namespace std; int main() { int n, k; cin >> n >> k; int tab[n]; for (int i = 0; i < n; i++) //taking n numbers from inpu

我试图解决一个问题,在这个问题中,我应该对数组中的数字进行排序,而不是从排序后的数组中提取前k个数字,并消除那些重复的数字,然后将它们写入输出

这是我的代码:

#include <iostream>

using namespace std;

int main()
{
int n, k;
cin >> n >> k;
int tab[n];
for (int i = 0; i < n; i++) //taking n numbers from input
{
    cin >> tab[i];            
} 

int j, element;
for (int i = 1; i < n; i++) //i am using insertion sort
{
    j = 0;
    while (tab[j] < tab[i])
          j++;
    element = tab[i];
    for(int k = i - 1; k >= j; k--)
            tab[k + 1] = tab[k];
    tab[j] = element; 
}

for (int i = 0; i < k; i++) //writing k smallest numbers without repetitions
{
    if (tab[i] == tab[i + 1])
       continue;
    cout << tab[i] <<"\n";    
}
cin >> n;
return 0;
}
#包括
使用名称空间std;
int main()
{
int n,k;
cin>>n>>k;
int tab[n];
对于(int i=0;i>选项卡[i];
} 
int j,元素;
for(inti=1;i=j;k--)
制表符[k+1]=制表符[k];
tab[j]=元素;
}
for(int i=0;icout我想你误解了这个问题。“消除那些重复的数字”意味着你必须打印一次数字,并消除该数字随后出现的情况

n = 5;
k = 3;
tab[n] = 5 1 1 1 1
在这里,排序选项卡[]变为“15”,然后预期输出为“1”,但您的程序没有给出任何结果

我希望这有帮助:)