这是比较3个数的大小,从小到大输出.那么输入n个数,从小到大依次排列呢?

时间:2020-12-04 19:31:42
#include<stdio.h>
void main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("%f,%f,%f",a,b,c);
}
这是比较3个数的大小,从小到大输出.那么输入n个数,从小到大依次排列呢?

20 个解决方案

#1


自己想想看!~

#2


想一个排序算法,具体怎么排序????

然后想怎么存放……

#3


#4


排序方法很多啊,最简单的冒泡,选择排序

效率较高的堆栈,归并等等

#5


引用楼主 greatlycool 的帖子:
#include <stdio.h>
void main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("%f,%f,%f",a,b,c);
}
这是比较3个数的大小,从小到大输出.那么输入n个数,从小到大依次排列呢?


如果你会用循环语句的话,用循环尝试一下…… 刚学的时候就要多想多动手……

#6


先输入,然后排序就可以,用什么排序方法自己可以选择,比如直接,插入,归并,快速,堆.....

#7


输入N个的无非是多了几次比较

#8


给你一个冒泡排序例子,效率不高,但容易理解,建议你多看看其他算法的思想 google baidu 都可以

#include<stdio.h>
#define N 10
                                                                                
int main(void)
{
        int a[N];
        int i, j, t;
                                                                                
        printf("input %d numbers:\n",N);
        for (i=0; i<N; i++)
                scanf("%d",&a[i]);
        printf("\n");
                                                                     
        for(j=0; j< N-1; j++)
                for(i=0; i<N-1-j; i++)
                        if (a[i] > a[i+1])
                        {
                                t = a[i];
                                a[i] = a[i+1];
                                a[i+1] = t;
                        }
                                                                                
        printf("the sorted numbers:\n");
        for(i=0; i<N; i++)
                printf("%d\t",a[i]);
        printf("\n");
        return 0;
}

#9


void swap (int *a,int *b)//交换
{
int*temp;
temp=a;
a=b;
b=temp;
}

void compare(int a ,int b)//当a〈b时交换a,b的位置
{
  if(a<=b)
swap(&a,&b);
}

int* changList(int Array[],int Length)//数组的排序由大到小
{
for(int j=0,j<Lenth;j++)
for(int i=0,i<Lenth;i++)
{
compare(Array[i],Array[i+1]);
}
return Array;
}

void main()
{
int ArrayLenth=0;//初始输入
int Icr=0;
int a[];
cin>>ArrayLenth;//输入数组长度
while(ArrayLenth--)
{
Icr++;
cin>>a[Icr];//数组初始话
}

int OutArray=changList(a,ArrayLenth);
while(ArrayLenth--)
cout<<OutArray[ArrayLenth];

}

#10


错咧成c++了  

#11


冒泡排序,选择排序等都可以
LZ搜一下相关算法

#12


使用循环啊,排序方法太多了,基本上书上都有现成的例子。

#13


应用到数组会好些的吧,申请一个足够大的数组,存储数据在排列 ,会很简单的

#14



我送楼主一个快速排序的算法吧!!(效率最高,重点考题!但是要下功夫捉摸哟)


#include <iostream.h> 
#include <time.h> 
#include <stdio.h> 
#include <stdlib.h> 
int Partition ( int * list , int low ,int high ) //split the list to two part
{
 int temp = list[low]; // let the number in low as pivotkey
 int pivotkey = list[low] ;
 while ( low < high )
 {
  while(low<high && list[high] >= pivotkey ) 
  high -- ;
  list[low] = list[high] ;
  while (low<high && list[low] <= pivotkey ) 
  low ++ ;
  list[high] = list[low] ;
 }
 list[low] = temp ;
 return low ;
}

void QuickSort ( int *list , int low , int high )  //qiuck sort
{
 if ( low < high )
 {

int pivotloc = Partition ( list, low, high );
QuickSort ( list , pivotloc+1 ,high);
        QuickSort ( list , low ,pivotloc-1) ;

 }
}
int main()
{
  int a[10]; 
  srand( (unsigned)time( NULL ) ); 
  for(int i = 0;i < 10;i++) 
  { 
a[i] = rand()%10; 
    cout <<i <<" = " <<a[i] <<endl; 
  } 
  QuickSort(a,0,9); 
  cout <<"after sorted:" <<endl; 
  for( i = 0;i < 10;i++) 
  { 
      cout <<"a[" <<i <<"] = " <<a[i] <<endl; 
  } 
}

#15


//效率不高


#include <stdio.h>

void sort(int *a, int n)
{
 int i, j, t, k;
 for(i=0; i<n-1; i++)
 {
   t=a[i];
   k=i;
   for(j=i+1; j<n; j++)
   {
     if(a[j]<t)
     {
       t=a[j];
       k=j;
      }
    }
   a[k]=a[i];
   a[i]=t;
  }
 }

int main(void)
{
  int a[100];
  int i,n;
  for(i=0, n=0;;i++, n++)
  {
   printf("Please input the %d one numbers:\n", i);

   if(scanf("%d",&a[i])!=1)     /* 输入非数字就退出 */
     break;
   }
  sort(a, n);

  for(i=0; i<n; i++)
  {
    printf("%d ", a[i]);
   }
  getch();
  return 0;
 }

#16


楼主如果按那样的想下去,那就惨了
收藏了

#17


用个排序算法

#18


最基础的数据结构:数组,可以帮上忙了。

#19


选择法排序

#20


冒泡排序

#1


自己想想看!~

#2


想一个排序算法,具体怎么排序????

然后想怎么存放……

#3


#4


排序方法很多啊,最简单的冒泡,选择排序

效率较高的堆栈,归并等等

#5


引用楼主 greatlycool 的帖子:
#include <stdio.h>
void main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("%f,%f,%f",a,b,c);
}
这是比较3个数的大小,从小到大输出.那么输入n个数,从小到大依次排列呢?


如果你会用循环语句的话,用循环尝试一下…… 刚学的时候就要多想多动手……

#6


先输入,然后排序就可以,用什么排序方法自己可以选择,比如直接,插入,归并,快速,堆.....

#7


输入N个的无非是多了几次比较

#8


给你一个冒泡排序例子,效率不高,但容易理解,建议你多看看其他算法的思想 google baidu 都可以

#include<stdio.h>
#define N 10
                                                                                
int main(void)
{
        int a[N];
        int i, j, t;
                                                                                
        printf("input %d numbers:\n",N);
        for (i=0; i<N; i++)
                scanf("%d",&a[i]);
        printf("\n");
                                                                     
        for(j=0; j< N-1; j++)
                for(i=0; i<N-1-j; i++)
                        if (a[i] > a[i+1])
                        {
                                t = a[i];
                                a[i] = a[i+1];
                                a[i+1] = t;
                        }
                                                                                
        printf("the sorted numbers:\n");
        for(i=0; i<N; i++)
                printf("%d\t",a[i]);
        printf("\n");
        return 0;
}

#9


void swap (int *a,int *b)//交换
{
int*temp;
temp=a;
a=b;
b=temp;
}

void compare(int a ,int b)//当a〈b时交换a,b的位置
{
  if(a<=b)
swap(&a,&b);
}

int* changList(int Array[],int Length)//数组的排序由大到小
{
for(int j=0,j<Lenth;j++)
for(int i=0,i<Lenth;i++)
{
compare(Array[i],Array[i+1]);
}
return Array;
}

void main()
{
int ArrayLenth=0;//初始输入
int Icr=0;
int a[];
cin>>ArrayLenth;//输入数组长度
while(ArrayLenth--)
{
Icr++;
cin>>a[Icr];//数组初始话
}

int OutArray=changList(a,ArrayLenth);
while(ArrayLenth--)
cout<<OutArray[ArrayLenth];

}

#10


错咧成c++了  

#11


冒泡排序,选择排序等都可以
LZ搜一下相关算法

#12


使用循环啊,排序方法太多了,基本上书上都有现成的例子。

#13


应用到数组会好些的吧,申请一个足够大的数组,存储数据在排列 ,会很简单的

#14



我送楼主一个快速排序的算法吧!!(效率最高,重点考题!但是要下功夫捉摸哟)


#include <iostream.h> 
#include <time.h> 
#include <stdio.h> 
#include <stdlib.h> 
int Partition ( int * list , int low ,int high ) //split the list to two part
{
 int temp = list[low]; // let the number in low as pivotkey
 int pivotkey = list[low] ;
 while ( low < high )
 {
  while(low<high && list[high] >= pivotkey ) 
  high -- ;
  list[low] = list[high] ;
  while (low<high && list[low] <= pivotkey ) 
  low ++ ;
  list[high] = list[low] ;
 }
 list[low] = temp ;
 return low ;
}

void QuickSort ( int *list , int low , int high )  //qiuck sort
{
 if ( low < high )
 {

int pivotloc = Partition ( list, low, high );
QuickSort ( list , pivotloc+1 ,high);
        QuickSort ( list , low ,pivotloc-1) ;

 }
}
int main()
{
  int a[10]; 
  srand( (unsigned)time( NULL ) ); 
  for(int i = 0;i < 10;i++) 
  { 
a[i] = rand()%10; 
    cout <<i <<" = " <<a[i] <<endl; 
  } 
  QuickSort(a,0,9); 
  cout <<"after sorted:" <<endl; 
  for( i = 0;i < 10;i++) 
  { 
      cout <<"a[" <<i <<"] = " <<a[i] <<endl; 
  } 
}

#15


//效率不高


#include <stdio.h>

void sort(int *a, int n)
{
 int i, j, t, k;
 for(i=0; i<n-1; i++)
 {
   t=a[i];
   k=i;
   for(j=i+1; j<n; j++)
   {
     if(a[j]<t)
     {
       t=a[j];
       k=j;
      }
    }
   a[k]=a[i];
   a[i]=t;
  }
 }

int main(void)
{
  int a[100];
  int i,n;
  for(i=0, n=0;;i++, n++)
  {
   printf("Please input the %d one numbers:\n", i);

   if(scanf("%d",&a[i])!=1)     /* 输入非数字就退出 */
     break;
   }
  sort(a, n);

  for(i=0; i<n; i++)
  {
    printf("%d ", a[i]);
   }
  getch();
  return 0;
 }

#16


楼主如果按那样的想下去,那就惨了
收藏了

#17


用个排序算法

#18


最基础的数据结构:数组,可以帮上忙了。

#19


选择法排序

#20


冒泡排序

#21