C语言 数组元素大小排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 数组元素大小排序相关的知识,希望对你有一定的参考价值。

通过程序实现的功能:
譬如输入一个数组1,4,2,3,9,6,5,8,7
最终输出结果为9,1,8,2,7,3,6,4,5

下面这个有误,求改,或者另外写一个也行
#include <stdio.h>
# define N 100
void fun(int *a,int n)

int i,j,max,min,px,pn,t;
for(i=0;i<n-1;i+=2)

max=min=a[i];
px=pn=i;

for(j=i+1;j<n;j++)

if(max<a[j])
max=a[j];px=j;
if(min>a[j])
min=a[j];pn=j;

if(px!=i)

t=a[i];a[i]=max;a[px]=t;
if(pn==i)pn=px;

if(pn!=i+1)
t=a[i+1];a[i+1]=min;a[pn]=t;


int main()

printf("please input an array:");
int b[N],int i,u,k;
u=0;
for(i=0;i<N;i++)

scanf("%4d",&b[i]);
u++;
if(getchar()=='\n')
break;

printf("the original array is:");
for(k=0;k<u;k++)
printf("%4d",b[k]);
printf("\n");
fun(b,u);
printf("\nthe result is:");
for(k=0;k<u;k++)
printf("%4d",b[k]);
return 0;

#include <stdio.h>

# define N 100

void fun(int *a,int n)

int i,j,max,min,px,pn,t;  

for(i=0;i<n-1;i+=2)      

  max=min=a[i];

  px=pn=i;

for(j=i+1;j<n;j++)

 if(max<a[j])

 max=a[j];px=j;

 if(min>a[j])

 min=a[j];pn=j;

if(px!=i)

 t=a[i];a[i]=max;a[px]=t;

 if(pn==i)pn=px;

if(pn!=i+1)

t=a[i+1];a[i+1]=min;a[pn]=t;

int main()

int b[N]=1,4,2,3,9,6,5,8,7;

int i,u,k;

u=9;

printf("the original array is:\\n");

for(k=0;k<u;k++)

printf("%4d",b[k]);

printf("\\n");

fun(b,u);

printf("\\nthe result is:\\n");

for(k=0;k<u;k++)

printf("%4d",b[k]);

return 0;

参考技术A

这里先直接给个从大到小排列的代码吧::

#include <stdio.h>
# define N 100
void main()

int buff[N];
int i,j,numN,temp;

//输入:
printf("Please input an array: ");
for(i=0;i<N;i++)

scanf("%4d",&buff[i]);
numN=i+1;//输入个数
if(getchar()=='\\n')break;


//显示输入数组:
printf("\\nThe original array is: ");
for(i=0;i<numN;i++)

printf("%d ",buff[i]);


//排序:
for(i=0;i<numN-1;i++)

for(j=i+1;j<numN;j++)

if(buff[i]<buff[j])//如果前者小于后者 则交换

temp=buff[i];
buff[i]=buff[j];
buff[j]=temp;





//排序后输出:
printf("\\n\\nThe result is: ");
for(i=0;i<numN;i++)

printf("%d ",buff[i]);


if(getchar()=='\\n');//暂停一下 enter键继续


希望对你有所帮助

本回答被提问者采纳

C语言一维数组冒泡排序

        冒泡排序是一种非常经典及简单的算法,常见于处理数组数据(成绩排名、销量排名等数据的处理)。但是难以用一两句话来概括,原理是比较相邻的两个元素的大小,如果第一个元素比第二个元素大或者小 就使它们互换位置,所有元素重复做同样的工作直至最后一对(也就是说你有n个元素就要比较n-1次)。

下面为代码演示:

首先使用随机数创建一个一维数组

排序算法
C语言一维数组冒泡排序
整体

运行结果

C语言一维数组冒泡排序演示结束



以上是关于C语言 数组元素大小排序的主要内容,如果未能解决你的问题,请参考以下文章

C语言—冒泡排序

c语言中怎么随输入确定数组大小,最好有实例

C语言—冒泡排序

C语言—冒泡排序

C语言—选择排序

C语言—选择排序