插入排序
插入排序:
基本思想:开始时数组中放置一个元素,然后剩下的N-1个元素对这个数组寻找合适的位置进行插入,最后排列完毕。
每插入一个数,数组中该位置以后元素需要向后移动一个位置,为新元素腾出位置。
算法:需要外层循环控制次数,内层循环从后向前寻找位置并插入元素。
时间复杂度:O(n^2)
代码:(升序)
#include<stdio.h> #define N 7 int main() { int a[N]={21,54,7,11,98,43,0}; int i,j,min,p; for(i=1;i<N;i++)//需要N-1次循环,第一个元素不用动 { p=a[i]; for(j=i-1;j>=0&&p<a[j];j--)//从后向前寻找位置 a[j+1]=a[j]; //向后移动元素 a[j+1]=p; //找到位置插入 } for(i=0;i<N;i++) printf("%d ",a[i]); return 0; }