#include <iostream>
#include <stdlib.h>
using namespace std;
/**
插入法排序
就是检查第i个数,如果它比左边的数大,就进行交换,直到左边的数比它小,或者不交换,直接把左边的值设置为第i个数的值
*/
void PrintArr(int *pArr, int nLen)
{
for (int i = 0; i < nLen; i++)
{
//cout << a[i] << ' ';
cout << *(pArr + i) << ' ';
}
cout << endl;
}
void InsertSort(int *pArr, int nLen)
{
if (pArr == NULL || nLen == 0)
return;
for (int i = 1; i < nLen; i++)
{
int nTemp = pArr[i];
/*
int k = i;
for (int j = k - 1; j >= 0; j--, k--)
{
if (nTemp < pArr[j])
swap(pArr[k], pArr[j]);
}
*/
int j;
for (j = i; j > 0 && nTemp < pArr[j - 1]; j--)
pArr[j] = pArr[j - 1];
pArr[j] = nTemp;
}
}
int main()
{
int a[1024];
for (int i = 0; i < 1024; i++)
{
a[i] = rand();
}
cout << "排序前" << endl;
PrintArr(a, 10);
InsertSort(a, 10);
cout << "排序后" << endl;
PrintArr(a, 10);
return 0;
}