void InsertionSort(int a[],int size)
{
for(int i=1;i<size;++i)//a[i]是最左的无序元素,每次循环将a[i]放到合适位置
{
for(int j=0;j<i;++j)
{
if(a[j]>a[i])
//要把a[i]放到位置j,原下标j到i-1的元素都往后移动一个位置
{
int tmp=a[i];
for(int k=i;k>j;--k)
a[k]=a[k-1];
a[j]=tmp;
break;
}
}
}
}
大致思路就是把一堆数组分成两部分(抽象),左边是有序的,右边是无序的,每次判断无序堆最左边的一个元素,插入到有序堆中寻找合适的位置
本文深入讲解插入排序算法的实现过程,通过将数组分为有序和无序两部分,逐步将无序部分的元素插入到有序部分的正确位置,实现整个数组的排序。详细展示了内层循环如何比较并移动元素,确保每次迭代后的数组左侧保持有序状态。

被折叠的 条评论
为什么被折叠?



