| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 387 人关注过本帖
标题:请教一道关于排序的问题
只看楼主 加入收藏
我是殊帕面
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2014-3-30
结帖率:100%
收藏
 问题点数:0 回复次数:0 
请教一道关于排序的问题
根据下列函数接口,实现该函数.
void sort(int a[],int m, int flag)
函数的功能:如果flag==0,则函数实现对数组a的前m个元素进行降序排列,如果flag!=0,则对数组a的前m个元素进行升序排列.
程序代码:
#include<stdio.h>
#define N 10
int main()                                      //主函数 
{
    void sort(int a[],int m, int flag);        //声明 
    int a[N],i,flag;                           //为了简化,定义数组长度为10 
    printf("请输入数组各元素:");              //输入 
    for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    printf("请输入0或1(0为降序,1为升序):");
    scanf("%d",&flag);
    sort(a,5,flag);                            //调用函数,为了简化,只让前5个数进行升序或降序 
    printf("调整顺序后的各元素顺序为:");
    for(i=0;i<N;i++)
      printf("%d ",a[i]);
    return 0;
}

void sort(int a[],int m,int flag)
{
    int i,j,k,t;
    if(flag==0)                             //降序,选择法                       
    {
        for(i=0;i<m-1;i++)
        {
            k=i;
            for(j=i+1;j<m;j++)
            if(a[j]>a[k])
            k=j;
            if(k!=i)
            {
                t=a[k];a[k]=a[i];a[i]=t;
            }
        }
     }
     else if(flag==1)                      //升序,冒泡法 
     {
         for(i=0;i<m-1;i++)
         for(j=0;j<m-1-i;j++)
         if(a[i]>a[i+1])
         {
             t=a[i];a[i]=a[i+1];a[i+1]=t;
         } 
     }    
}

除了冒泡法和选择法还有什么排序方法呢?或者说这道题还有什么更好的方法呢?谢谢!
搜索更多相关主题的帖子: 接口 元素 
2014-05-27 20:56
快速回复:请教一道关于排序的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043821 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved