插入排序就是一直向后读,第一个数,加入前面已经有序的一串数里。
而插入排序是笨笨的一个个向前找的,可以优化一下,用二分查找找到合适的位置。
插入排序代码
void Insertsort2(int a[], int n)
{
int i, j;
for (i = 1; i < n; i++)
if (a[i] < a[i – 1])
{
int temp = a[i];
for (j = i – 1; j >= 0 && a[j] > temp; j–)
a[j + 1] = a[j];
a[j + 1] = temp;
}
}
所以只需要理解一下二分查找就可以了
比如一个串数,已经有序
分成对等(尽量)两块
注意3个数 第一块末端 第二块前端 你手上的数
进行一个大小的比较 考虑在哪块区间就可以了
如果最后只有3个数了,会拆分成2个数+1个数
其实也是一样。。。
如果最后只有2个数了,会拆分成1个数+1个数
其实也是一样。。。