编写C语言程序,把一个数组按从小到大的次序排列起来

Python014

编写C语言程序,把一个数组按从小到大的次序排列起来,第1张

源程序以及算法注释如下:

#define _CRT_SECURE_NO_WARNINGS//VS编译环境需要进行宏定义,VC6.0可忽略

#include<stdio.h>//输入输出头文件

int main()

{

int number[10], New_number[10]//定义数组的数据类型为整型

int i, j, m, n, k//定义变量的数据类型为整型

printf("input 10 <int>number:")//文字提示

for (i = 0i <= 9i++)//用循环输入数值给数组number并赋给数组New_number

{

scanf("%d", &number[i])//输入10个整形数字到数组中

New_number[i] = number[i]//数组number元素赋给数组New_number

}

for (n = 0n <= 8n++)//要进行(10-1)组比较

for (j = 0j <= 8 - nj++)//每组进行(10减第几组)次比较

{

if (number[j] >number[j + 1])//比较大小并将小的赋给前面的数组

{

k = number[j]//将相对较大的元素赋值给中间元素

number[j] = number[j + 1]//将相对较小的元素送达前面一个位置

number[j + 1] = k//将中间变量元素送给后面一个位置

}

if (New_number[j] <New_number[j + 1])//比较大小并将大的赋给前面的数组

{

k = New_number[j + 1]//将相对较小的元素赋值给中间元素

New_number[j + 1] = New_number[j]//将相对较大的元素送达前面一个位置

New_number[j] = k//将中间变量元素送给后面一个位置

}

}

printf("min-->max:\n")//文字提示

for (m = 0m <= 9m++)//依次从小到大输出

printf("%d ", number[m])//输出元素

printf("\n")

printf("max-->min:\n")//文字提示

for (m = 0m <= 9m++)//依次从大到小输出

printf("%d ", New_number[m])//输出元素

printf("\n")

return 0

}

程序运行结果如下:

扩展资料:

其他简单实现程序:

#include<stdio.h>

int main()

{

int a[10]={0}

int i,j,temp

for(i = 0i<10i++)

{

scanf("%d",&a[i])

}

for(i = 0i<10i++)

{

for(j = 0j<10-i-1j++)

{

if(a[j]>a[j+1])

{

temp = a[j]

a[j] = a[j+1]

a[j+1] = temp

}

}

}

for(i = 0i<10i++)

printf("%d ",a[i])

return 0

}

今天为嘛总是见到最后这句话……

初学者……冒泡呗,两个数据都冒。两个for循环,两趟比较,每趟把最大的放最前面(或者最小的放最后面,我感觉都一样)交换的时候,把两个都同时交换了就好……

#include

"stdio.h"

void

reverse(int

a[],int

pos,int

n)//把数组a中从下标pos开始的n个数逆置

{

int

*p=a+pos

int

*q=a+pos+n-1

while(p<q)

{

int

temp=*p

*p=*q

*q=temp

p++q--

}

}

void

main()

{

int

a[10]={1,2,3,4,5,6,7,8,9,10}

int

pos,n

int

i

scanf("%d%d",&pos,&n)

reverse(a,pos,n)

for(i=0i<10i++)

printf("%d

",a[i])

}