插入排序的一种尾递归实现-C

#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上提问后得到了这位网友的解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值