直接插入排序
直接贴代码:
#include<stdio.h>
void InsertSort(int *array,int len);//插入排序
void ShowArray(int *array,int len);//展示数组
int main()
{
int array[10]={9,2,3,4,1,6,8,7,5,0};
InsertSort(array,sizeof(array)/sizeof(int));
ShowArray(array,sizeof(array)/sizeof(int));
return 0;
}
//升序排列
void InsertSort(int *array,int len)
{
int i,j,temp;
for(i = 1;i<len;i++)
{
temp=array[i];
//每当当前元素比temp大的时候,就让当前元素往后移动
for(j=i-1;j<len&&array[j]>temp;j--)
{
array[j+1]=array[j];
}
//最后将temp插入正确的位置
array[j+1]=temp;
}
}
void ShowArray(int *array,int len)
{
int *start=array;
int *end=array+len;
//指针遍历输出数组元素
while(start!=end)
{
printf("%d ",*start);
start++;
}
printf("\n");
}
性能分析:
时间复杂度:嵌套循环:O(n*n)
空间复杂度:常数个:O(1)