当前位置: 代码迷 >> C语言 >> 后面应该怎编才能使刚输入的10个数按升序排列呢?
  详细解决方案

后面应该怎编才能使刚输入的10个数按升序排列呢?

热度:292   发布时间:2008-06-18 20:39:02.0
后面应该怎编才能使刚输入的10个数按升序排列呢?
#include <stdio.h>
void inarr(int *p,int n);
void sort(int *p,int n);


void main()
{
  int *p,n;
  inarr(p,n);
  sort(p,n);
}

void inarr(int *p,int n)
{
  int a[10];
  p=a;
  for(n=0;n<10;n++)
  {
  printf("a[%d]=",n);
  scanf("%d",p++);
  }
   
}
void sort(int *p,int n)
{
??????????
}
搜索更多相关的解决方案: 排列  输入  

----------------解决方案--------------------------------------------------------
我原来编的:
void sort(int *p,int n)
{
    int i,j,t;
    int a[10];
    p=a;
    for(i=0;i<10;i++)
    {
      for(j=0;j<9;j++)
      {
          if(p[j]>p[j+1])
          {
              t=p[j];
              p[j]=p[j+1];
              p[j+1]=t;
          }
      }
    }
    for(i=0;i<10;i++)
      printf("%d\n",p++);
}      
          
失败了
发现调用不了上一个函数所输进的数组。

[[it] 本帖最后由 jjk8571100 于 2008-6-18 21:11 编辑 [/it]]
----------------解决方案--------------------------------------------------------
void qsort(int low,int high,int key[])
{
     int i=low,j=high,tag=key[i];
     if(i<j)
     {
            do
            {
              while(tag<key[j] && i<j) j--;
              if(i<j)
              {
                key[i]=key[j];
                i++;
                while(tag>=key[i] && i<j) i++;
                if(i<j)
                {
                  key[j]=key[i];
                  j--;
                }
              }
            }while(i<j);
            key[i]=tag;
            qsort(low,j-1,key);
            qsort(i+1,high,key);
     }
}
----------------解决方案--------------------------------------------------------
  相关解决方案