Mic*_*ICE 0 c++ algorithm insertion-sort
我正在阅读"算法简介"并阅读插入排序.
我试图在没有先阅读解决方案的情况下自己实现它.
这是我的解决方案,这是插入排序吗?
#include <iostream>
using namespace std;
int main()
{
// initialize an unsorted array
int a[] = {5,6,4,7,3,8,2,9,0,1};
// define variables
int i,j,tmp;
for (int j=1; j<10; ++j)
{
for (int i=0;i<j;++i)
{
if (a[j] < a[i])
{
tmp = a[j];
a[j] = a[i];
a[i] = tmp;
}
}
}
for (i=0;i<10;++i)
{
cout << a[i] << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
好的,我已经阅读了,并理解为什么它不是插入排序...这要好得多.
#include <iostream>
using namespace std;
int main()
{
// initialize an unsorted array
int a[] = {5,6,4,7,3,8,2,9,0,1};
// define variables
int i,j,key,c;
for (int j=1; j<10; ++j)
{
key = a[j];
i = j - 1;
while(i>=0 && a[i] > key)
{
a[i+1] = a[i];
i = i - 1;
}
a[i+1]
= key;
++c;
}
for (i=0;i<10;++i)
{
cout << a[i] << endl;
}
cout << endl << c << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)