插入排序
思想:
1、外循环遍历,记录当前索引对应值。
2、内循环:从当前索引往前,如果记录值要小,则这些值往后移动一步,否则,将记录值写入停止处的索引对应值。
代码:
注释掉的是我写的,而还在的是”c++ data structures and algorithms”里面的。别人写的果然好许多……
#include <iostream>
using namespace std;
int main()
{
const int n = 10;
int org[n] = { 77,2,22,4,33,6,7,44,9,10 };
//insert_sort
//for (int i = 1;i<n;++i)
//{
// for (int j = i - 1, k = i;j >= 0;--j, --k)
// {
// if (org[k] < org[j])
// {
// swap(org[j], org[k]);//带&的没有匹配函数。
// }
// else
// {
// break;
// }
// }
//}
for (size_t i = 1,j;i < n;++i)
{
int temp = org[i];
for (j = i;j > 0 && temp < org[j - 1];--j)
org[j] = org[j - 1];
org[j] = temp;
}
for (int i = 0;i < n;++i)
{
cout << org[i] << " ";
}
cout<< "\t\t\t\t\t\t@zem" << endl;
system("pause");
return 0;
}