#include<stdio.h>
#define N 5 //数组长度
int no_rec=0; //递归次数
void insert_sort(int*);
int main()
{
int arr[N]={5,4,4,0,1};
insert_sort(arr);
for(int i=0;i<=N-1;i++)
printf("%d ",arr[i]);
}
void insert_sort(int *arr) //这个指针一直指向数组的首元
{
no_rec++;
int key=*(arr+no_rec); //根据这个指针,加上 no_rec 找到数组需要被插入的元素。
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); //调用时,指针还是指向数组的首元。
}
在此要感谢CSDN的网友“cxlovu”,作为学习C的新手,实现这个排序的时候自己犯傻一直未写对,在CSDN上提问后得到了这位网友的解答。