插入排序
将一个记录插入到一个有序排列的表,从而形成一个新的,记录增1的表。
两层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素插入到前面有序的表中。(在第一次内循环开始前先进行了排序对前两个,第三个数插入时通过逐一比较进行移动到正确位置)
C++实现如下
void swap(int* p,int* q )
{
*p = *p ^ *q;
*q = *p ^ *q;
*p = *p ^ *q;
}
int main()
{
int arr[10] = { 13,7,15,6,9,3,1,5,2,4 };
for (int i = 1; i < 10; i++)
{
for (int j = i; j >0;j--)
{
if (arr[j] < arr[j-1])
{
swap(&arr[j], &arr[j - 1]);
}
else
{
break;
}
}
}
for (int i = 0; i < 10; i++)
{
std::cout << arr[i]<<"\n";
}
}