#include
#define N 5 //数组长度
int no_rec=0; //记录递归次数的变量
void insert_sort(int );
int main()
{
int arr[N]={5,4,3,2,1};
insert_sort(arr);
for(int i=0;i<=N-1;i++)
printf("%d ",arr[i]);
}
void insert_sort(int *arr) //这个指针在递归时从数组首元指向数组的倒数第二 个元素。
{
no_rec+=1;
int key=(arr+1); //根据这个指针,找到数组的下一个元素,也就是需要插入的 元素。
int j=no_rec;
while(j>0 && (arr+j-1)>key) //这一部分就是一般的插入排序了。
{
*(arr+j)=(arr+j-1);
j--;
}
*(arr+j)=key;
if(no_rec<N-1) //根据数组的长度 N,确定调用次数
insert_sort(arr+1); //调用时,指针指向下一个元素。
}
可是为什么不对啊?