C 程序对单个数组中的两半执行操作
cserver side programmingprogramming更新于 2024/11/9 15:14:00
问题
编写一个程序,接受一个包含 N 个元素的一维数组,并将其分成两半。然后,对前半部分按升序排序,对后半部分按降序排序。
解决方案
下面解释了使用 C 编程语言对单个数组中的两半执行两个操作的解决方案 −
对前半部分按升序排序的逻辑如下 −
for (i=0; i<b; ++i){ for (j=i+1; j<b; ++j){ if (number[i] > number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } } }
对后半部分进行降序排序的逻辑如下 −
for (i=b; i<n; ++i){ for (j=i+1; j<n; ++j){ if (number[i] < number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } } }
将数组拆分为两半并相应地打印的逻辑如下所示 −
- 升序前半部分
for (i=0; i<b; ++i) printf ("%d ",number[i]);
- 降序后半部分
for(i=b;i<n;i++) printf("%d ",number[i]);
示例
以下是 C 程序,用于对单个数组中的两半执行两个操作 −
#include<stdio.h> void main(){ int i,j,a,n,b,number[30]; printf ("Enter the value of N
"); scanf ("%d", &n); b = n/2; printf ("Enter the numbers
"); for (i=0; i<n; ++i) scanf ("%d",&number[i]); for (i=0; i<b; ++i){ for (j=i+1; j<b; ++j){ if (number[i] > number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } } } for (i=b; i<n; ++i){ for (j=i+1; j<n; ++j){ if (number[i] < number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } } } printf (" The 1st half numbers
"); printf (" arranged in asc
"); for (i=0; i<b; ++i) printf ("%d ",number[i]); printf("
The 2nd half Numbers
"); printf("order arranged in desc.order
"); for(i=b;i<n;i++) printf("%d ",number[i]); }
输出
当执行上述程序时,它会产生以下结果 −
Enter the value of N 10 Enter the numbers 20 34 23 11 45 56 78 98 76 54 The 1st half numbers arranged in asc 11 20 23 34 45 The 2nd half Numbers order arranged in desc.order 98 78 76 56 54