目录
算法理解
- 直接插入排序:在前i个数中,若比前面的数小,则不断往前移。
- 需要严格控制循环条件!!
- i一定不能越界
图示
数据结构方面
- 指针能用数组的形式表示
- 数组实质上就是指针,因此方法中,可以用int* 来定义。
- 当然也可以中规中矩的用它本身的定义来书写。
如何计算数组长度?(简便方法)
代码
//直接插入排序:在前i个数中,若比前面的数小,则不断往前移。
#include<stdio.h>
#include<stdlib.h>
//函数声明
void InsertSort(int* array,int size );
void Display(int* array,int size);
//方法定义
void InsertSort(int* array,int size )
{
int i=1,j,temp;
while(i<size&&i>0 )
{
j=i;
while(array[i-1]>array[i]&&i>0)
{
temp=array[i];
array[i]=array[i-1];
array[i-1]=temp;
i--;
}
i=++j;
}
Display(array,size);
puts("排序完成。。。");
}
void Display(int* array,int size)
{
int i=0;
while(i<size )
{
printf(" %d",array[i]);
if((i+1)%10==0)
{
puts("");
}
i++;
}
puts("");
}
//主程序
int main()
{
int array[]={1,4,2,5,23,21,41,4,12,2,6,3,4,2,6};
int size=sizeof(array)/sizeof(array[0]);
printf("数组array的长度为:%d\n",size);
InsertSort(array,size);
return 0;
}