当前位置:首页 » 编程语言 » c语言排大小

c语言排大小

发布时间: 2023-01-03 01:25:20

c语言排列大小

#include"stdio.h"
#include"stdlib.h"//使用malloc函数必须的头文件
intmain()
{
inti=0,j=0,k=0;
intn,m;
int*a,*b;//动态数组应该定义为指针
scanf("%d",&n);//输入格式中去掉
a=(int*)malloc(n*sizeof(int));//然后由malloc函数根据输入的n分配空间
b=(int*)malloc(n*sizeof(int));
m=n-1;
for(k=0;k<=m;k++)
{
scanf("%d",&a[k]);//输入格式中去掉
}
for(k=0;k<=m;k++)//范围是到k<=m,原来少一个元素所以最后有个0
b[k]=0;
for(k=0;k<=m;k++)//范围是到k<=m,原来少一个元素所以最后有个0
{
i=0;
j=0;
do
{
if(b[j]<=a[k])
{
for(i=m;i>j;i--)
{
b[i]=b[i-1];
}
b[j]=a[k];
break;
}
else
j=j+1;
}
while(j<=m);
}
for(k=0;k<=m;k++)
printf("%d ",b[k]);
return0;
}

可以拷贝试验,已验证结果正确

❷ C语言比较大小排序问题

#define N 10//宏定义,用N代替10
#include "stdio.h"//标准输入输出库,你在控制台输入数据和显示数据用的
main()//主函数
{
int a[N],i,j,temp;//声明需要排序的数组a和排序用的的一些“小工具”,i、j、temp
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)//这个循环是和用户交互,手动输入10个数理组成数组
scanf("%d",&a[i]);
for(i=0;i<N-1-i;i++)//i从前往后数
for(j=0;j<N-1-i;j++)//在每一个i(比如0,比如1)下从前往后数j
if(a[j]>a[j+1])//如果j比他后边的大,交换
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}//两数前后互换
//上边这个循环就是从前往后数a的元素,比如到a[0],那么最大的数移到最后一位;在比如a[1],倒数第二大的数移到倒数第二位(因为最大的在后边,你移步过去了?)
//为什么要走这么多次。每次j的循环都好比一个波浪,一次只能保证一个最大数到了最后一位,其他的可能还是乱序,所以要一浪接一浪。
//这个算法的巧妙之处在于,i只走一半,也就是i从0到4,而j每次也不用到最后一位(j<N-1-i),因为最后那i+1位已经排好了
//比较次数,i=0时9次,i=1时8次,i=2时7次,i=3时6次,i=4时5次,一共35次
printf("排序之后的数据序列:\n");
for(i=0;i<N;i++)//把排序后的数列显示出来,%5d代表每一个数占5位,就是排列的整齐点。
printf("%5d",a[i]);
printf("\n");
}

#include"stdio.h"
#define N 10
main()
{
int a[N],i,j,r,temp;
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)//用i遍历数组a。
{r=i;//局部的r值,i从0到8每次不同,r也不同。
for(j=i+1;j<N;j++)//j是从i当前的值一直到最后(前一种排序时每次j的结尾位置不同,到9,到8.到7。)
if(a[j]<a[r])r=j;//用r标记最小的一个值,
if(r!=i)//如果这个最小的值不是a[i],对换,让i所在值变成最小,意思是a[0]最小,a[1]第二小,以此类推
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之后的数据序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");

//i=0,j循环9次;i=1,j循环8次。。。。一共45次
}

我把函数改了,这样可以测试,你去跑一下就明白过程了

#include"stdio.h"
#define N 10
main()
{
int count = 0;
int a[N],i,j,r,temp;
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)
{r=i;
for(j=i+1;j<N;j++){
if(a[j]<a[r])r=j;

count++;
printf("i:%d\tj:%d\tcount:%d\n",i,j,count);
}
if(r!=i)
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之后的数据序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n%d\n",count);
}

❸ C语言排大小问题

第一个if之后,得到的是 a<b
第二个if之后,得到的是 a<c
第三个if之后,得到的是 b<c
所以是 a<b<c 你的是从小到大了
解释第一个if
如果a>b,则a b互换,所以最后得到a<b
其它同理

❹ C语言中要把三个数从大到小排列出来应该怎么编

初学简单版本代码如下:

#include<stdio.h>

int main( )

{

int a, b, c;//定义三个数的变量

int t ;//定义作为交换的变量

scanf ( "%d%d%d" , &a, &b, &c ) ; //取值

if ( a < b )

{t = a; a = b; b = t ;};//如果a,b,进行交换,反之不动

if ( a < c )

{t = a; a = c; c = t ;};//同上

if ( b < c )

{t = b; b = c; c = t ;};

printf( "%-5d%-5d%-5d " , a, b, c);//输出

}

(4)c语言排大小扩展阅读:

C语言中其他多个数排序的方法:

1、冒泡排序法

#include <stdio.h>

#define SIZE 8

void bubble_sort(int a[], int n);

void bubble_sort(int a[], int n)

{

int i, j, temp;

for (j = 0; j < n - 1; j++)

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

{

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

{

temp = a[i];

a[i] = a[i + 1];

a[i + 1] = temp;

} } }

int main()

{

int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};

int i;

bubble_sort(number, SIZE);

for (i = 0; i < SIZE; i++)

{

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

}

}

2、选择排序

#include<stdio.h>

void main()//主函数

{

int a[10];

int i,j,w;

printf("请输入10个数字: ");

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

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

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

{

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

if(a[i]<a[j])//进行比较

//比较后进行交换

{

w=a[i];

a[i]=a[j];

a[j]=w;

}

❺ 该如用C语言程序排列大小

排序数组可以使用冒泡算法:如果前一个数据比后一个大,则交换。

#include<stdio.h>

//使用冒泡算法升序数组src

voidsort(int*src,intlen)

{

inttem;

for(inti=0;i<len;i++)

{

for(intj=0;j<len-i-1;j++)//每循环一次,则少一次

if(src[j]>src[j+1])//如果前一个数据比后一个大,则交换

{

tem=src[j];

src[j]=src[j+1];

src[j+1]=tem;

}

}

}

intmain()

{

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

sort(a,10);//排序

for(inti=0;i<10;i++)//输出结果

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

return0;

}

❻ 如何用C语言设计程序排列6个数字的大小顺序

排序数组可以使用冒泡算法:如果前一个数据比后一个大,则交换。

{

int i,j,t,a[6];

printf("Please input 6 integers: ");

for(i=0;i<6;i++)

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

for(i=0;i<5;i++) /* 冒泡法排序 */

for(j=0;j<6-i-1;j++)

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

{t=a[j];/* 交换a[i]和a[j] */

a[j]=a[j+1];

a[j+1]=t;

}

优点:

简洁紧凑、灵活方便:C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

以上内容参考:网络-c语言程序设计

❼ c语言中输入20个数排列大小顺序

代码如下:

inta[20];
inti,j,t;
printf("请输入20个数字,以回车间隔:");
for(i=0;i<20;i++)
scanf("%d",&a[i]);
printf(" ");

for(j=0;j<20;j++)
for(i=0;i<20-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("排序好的数组为: ");
for(i=0;i<20;i++)
printf("%d",a[i]);
printf(" ");
}

❽ 求C语言将数组元素大小排序!!

#include <stdio.h>

int main(){

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

int a,b, text, hello;

for(a=0; a<10-1; a=a+1) { //在这里进行比较的开始的代码

hello = 1; //假如剩下的元素已经被排序好了,然后接着进行下面的比较

for(b=0; b<10-1-i; b=b+1){

if(numbers[b] > numbers[b+1]){

text= numbers[b];

numbers[b] = numbers[b+1];

numbers[b+1] = text;

hello= 0;

}

}

if(hello) break;

}

for(a=0; a<10; a=a+1){

printf("%d ", numbers[a]);

}

printf(" ");

return 0;

}

(8)c语言排大小扩展阅读

C语言中数组元素大小的相关排序规则:

一、首先需要对数组中的元素进行排列,默认是以字符串的规则进行从小到大排序;可接收一个参数:自定义的规则相关排序。参数的具体要求如下:

1、参数首先必须是一个函数;

2、函数必须有一个明确的返回值;

3、返回值必须是number类型,但不可以是NaN。

二、排序中的具体规则:

1、首先每次从数组中挑选出两个元素传入函数中,进行比较,直到所有进行排列的元素都被挑选完毕以后就不要再进行挑选;

2、如果返回值是一个正数,就交换这彼此的位置,实现大小的正确排列;

3、如果返回值是一个负数或0,此时说明大小位置的顺序是正确的,此时就不需要交换彼此的位置。

4、默认同一字符的全角字符看做半角字符。不区分同一个字符(如日文的片假字)的半角与全角状态。相同元素,维持原序,默认区分字母大小写,同一个字符小写在前,大写在后。

注意:对数组的元素进行排序需要不断比较两个数字的大小,10个元素排序一共需要比较9次,直到所有的元素被都完完全全地被比较一次。

热点内容
水电煤算法 发布:2025-07-04 18:36:44 浏览:327
天翼视讯缓存文件夹 发布:2025-07-04 18:36:43 浏览:95
unix网络编程第2卷 发布:2025-07-04 18:33:41 浏览:780
编译历史 发布:2025-07-04 18:23:01 浏览:851
空调压缩机种类 发布:2025-07-04 18:13:58 浏览:242
中国有ip6服务器吗 发布:2025-07-04 17:58:56 浏览:726
第六章编译原理答案 发布:2025-07-04 17:37:55 浏览:40
php内存优化 发布:2025-07-04 17:25:54 浏览:664
威纶触摸屏如何设置时间限制密码 发布:2025-07-04 17:25:50 浏览:418
python列表的遍历 发布:2025-07-04 17:24:20 浏览:24