插入排序是最基础的排序算法,原理:
首先1个元素肯定是有序的,所以插入排序从第二个元素开始遍历;
内循环首先请求一个空间保存待插入元素,从当前元素向数组起始位置反向遍历;
当发现有大于待插入元素的元素,则将此元素向后挪一位,最终将缓冲区的元素放入空白位置。
void insert_sort(int a[],int n) { int i,j,temp; for(i=1; i<n; i++) { temp=a[i]; for(j=i; j>0; j--) { if(temp<a[j-1]) { a[j]=a[j-1]; }else{ break; } } a[j]=temp; } }
有图有真相: