1. 插入函数
void insertSort(int arry[],int length)
{
int i,j,k,num;
/*外层循环从第二个元素开始比较,
比较从0到他们前一个元素之间有没有合适的位置插入*/
for(i=1;i<length;i++)
{
num = arry[i];//要改变位置的元素保存到num中
for(j=0;j<i;j++)
{/*先找插入的位置*/
if(arry[i]<arry[j])
{
break;
}
}
// printf("j=%d,i=%d,num=%d\n",j,i,num);
if(j!=i)
{
for(k=i-1;k>=j;k--)
{/*依次向后移动元素,直到移动到需要插入的位置(j)*/
arry[k+1] = arry[k];
}
arry[j] = num;//元素插入到指定位置
}
}
}
2.主函数
int main()
{
int arry[10] = {10,10,10,7,11,5,5,9,12,1};
int length = 10;
insertSort(arry,length);
int i;
for(i=0;i<length;i++)
{
printf("%d ",arry[i]);
}
return 0;
}
3.完整代码
#include <stdio.h>
#include <stdlib.h>
void insertSort(int arry[],int length)
{
int i,j,k,num;
/*外层循环从第二个元素开始比较,
比较从0到他们前一个元素之间有没有合适的位置插入*/
for(i=1;i<length;i++)
{
num = arry[i];//要改变位置的元素保存到num中
for(j=0;j<i;j++)
{/*先找插入的位置*/
if(arry[i]<arry[j])
{
break;
}
}
// printf("j=%d,i=%d,num=%d\n",j,i,num);
if(j!=i)
{
for(k=i-1;k>=j;k--)
{/*依次向后移动元素,直到移动到需要插入的位置(j)*/
arry[k+1] = arry[k];
}
arry[j] = num;//元素插入到指定位置
}
}
}
int main()
{
int arry[10] = {10,10,10,7,11,5,5,9,12,1};
int length = 10;
insertSort(arry,length);
int i;
for(i=0;i<length;i++)
{
printf("%d ",arry[i]);
}
return 0;
}
4.运行结果