题目:
插入排序: 一个数组中有N个数,已经排好顺序、按增序排列。 现在插入一个新的值,要求插入到指定位置,插入后所有数仍然是按增序排列 。
我的解法:
#include <stdio.h>
int main()
{
int a[16] = { 1, 3, 5, 7, 9 };
int count = 5; // 现存了5个数
int b = 4;
for (int i = 0; i < count; i++)
{
if (b < a[i])
{
int temp = count;
for (int j = i; j < count; j++)
{
a[temp] = a[temp-1];
temp--;
}
a[i] = b;
break;
}
}
for (int i = 0; i <= count; i++)
{
printf("%d\t", a[i]);
}
return 0;
}
邵发老师的解法:
#include <stdio.h>
int main()
{
int a[16] = {1, 3, 5, 7, 9 };
int count = 5; // 现存了5个数
int b = 4;
// 找到待插入的位置
int pos = count;
for(int i=0; i<count; i++)
{
if( b < a[i] )
{
pos = i;
break;
}
}
printf("插入的位置是: %d \n", pos);
// 后移
// a[5] = a[4]
// a[4] = a[3]
for(int i=count; i > pos ; i--)
{
a[i] = a[i-1];
}
// 插入
a[pos] = b;
return 0;
}