冒泡排序

Code:
  1. #include<stdio.h>  
  2. #include<malloc.h>  
  3.   
  4. void Ipub(int *,int);  
  5.   
  6. int main()  
  7. {  
  8.     int *p=NULL,n,i;  
  9.     scanf("%d",&n);  
  10.     p=(int *)malloc(sizeof(int)*n);  
  11.     for(i=0;i<n;i++)  
  12.         scanf("%d",&p[i]);  
  13.     Ipub(p,n);  
  14.     for(i=0;i<n;i++)  
  15.         printf("%d/n",p[i]);  
  16.     free(p);  
  17.     return 0;  
  18. }  
  19. void Ipub(int *p,int n)  
  20. {  
  21.     int head,last,temp,i,j;  
  22.     head=0;  
  23.     last=n-1;  
  24.     while(last>head)            //控制排序终止条件  
  25.     {  
  26.         j=last-1;  
  27.         last=0;  
  28.         for(i=head;i<=j;i++)     //首先将下标在i~j+1内的最大值放到p[j+1]内,同时记录最新的尾部  
  29.         {  
  30.             if(p[i]>p[i+1])  
  31.             {  
  32.                 temp=p[i];  
  33.                 p[i]=p[i+1];  
  34.                 p[i+1]=temp;  
  35.                 last=i;         //记录尾部  
  36.             }  
  37.         }  
  38.         j=head+1;  
  39.         head=0;  
  40.         for(i=last;i>=j;i--)   //从尾部开始,将下标为last~j-1的元素中的最小值放到p[j-1]中,同时记录最新的头部  
  41.         {  
  42.             if(p[i]<p[i-1])  
  43.             {  
  44.                 temp=p[i];  
  45.                 p[i]=p[i-1];  
  46.                 p[i-1]=temp;  
  47.                 head=i;         //记录头部  
  48.             }  
  49.         }  
  50.     }  
  51. }  

代码仅供参考,不足之处请指正。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值