C 语言数组降序排序程序

如何使用 For 循环和函数编写 C 语言程序,将数组按降序排序,并附带示例。

C 语言数组降序排序程序

此程序允许用户输入一维数组的大小和元素。接下来,在此程序中,我们使用嵌套 For 循环将数组元素按降序排序,并打印其中的所有元素。

#include <stdio.h>

int main()
{
	int Array[50], i, j, temp, Size;
	
	printf("\nPlease Enter the Number of elements in an array  :  ");
	scanf("%d", &Size);
	
	printf("\nPlease Enter %d elements of an Array \n", Size);
	for (i = 0; i < Size; i++)
	{
		scanf("%d", &Array[i]);
    }     
	for (i = 0; i < Size; i++)
	{
		for (j = i + 1; j < Size; j++)
		{
			if(Array[i] < Array[j])
			{
				temp = Array[i];
				Array[i] = Array[j];
				Array[j] = temp;
			}
			
		}
	}
	printf("\n **** Array of Elemenst in Descending Order are : ****\n");
	for (i = 0; i < Size; i++)
	{
		printf("%d\t", Array[i]);
	}
	
	return 0;
}
C Program to Sort Array in Descending Order 1

在此,For 循环 将确保数字介于 0 和一维数组的最大大小值之间。在此示例中,它将是从 0 到 4。

for (i = 0; i < Size; i++)
{
	for (j = i + 1; j < Size; j++)
	{
		if(Array[i] < Array[j])
		{
			temp = Array[i];
			Array[i] = Array[j];
			Array[j] = temp;
		}		
	}
}

在此数组降序排序程序示例中,

第一个 For 循环 - 第一次迭代: for(i = 0; 0 < 5; 0++)
条件为 True,因此它将进入第二个 for 循环。

第二个 For 循环 - 第一次迭代: for(j = 0 + 1; 1 < 5; 1++)
For 循环内的条件为 True,因此编译器将进入If 语句

if(Array[0] < Array[1]) = if(25 < 86) – 这意味着条件为 True。
temp = 25
Array[i] = 86
Array[j] = 25

现在数组将是 86 25 95 14 56。接下来,j 将增加 1。

第二个 For 循环 - 第二次迭代: for(j = 2; 2 < 5; 2++)
For 循环内的条件为 True。因此,C 语言编程编译器将进入 If 语句:if(Array[0] < Array[2])

if(86 < 95) – 这意味着条件为 True。
temp = 86
Array[i] = 95
Array[j] = 86
现在数组将是 95 25 86 14 56。接下来,j 将增加 1。

第二个 For 循环 - 第三次迭代: for(j = 3; 3 < 5; 3++)
For 循环内的条件为 True。

if(Array[0] < Array[3]) => if(95 < 14) – 这意味着条件为 False,因此它将退出 If 块,j 值将增加 1。

第二个 For 循环 - 第四次迭代: for(j = 4; 4 < 4; 4++)
For 循环内的条件为 True。

if(Array[0] < Array[4]) => if(95 < 56) – 这意味着条件为 False,因此它将退出 If 块,j 值增加 1。

C 语言数组降序排序程序中的第二个 For 循环 - 第五次迭代:for(j = 5; 5 < 5; 5++)
For 循环内的条件为 False。因此,编译器将退出 For 循环。接下来,i 值将增加 1。

第一个 For 循环 - 第二次迭代: for(i = 1; 1 < 5; 1++)
条件为 True,因此它将进入第二个 for 循环。

第二个 For 循环 - 第一次迭代: for(j = 1 + 1; 2 < 5; 2++)
For 循环内的条件为 True。

if(Array[1] < Array[2]) => if(25 < 86) – 这意味着条件为 True。
temp = 25
Array[i] = 86
Array[j] = 25

现在数组将是 95 86 25 14 56。接下来,j 将增加 1。

第二个 For 循环 - 第二次迭代: for(j = 3; 3 < 5; 3++)
For 循环内的条件为 True。因此,编译器将进入 If 语句:if(Array[1] < Array[3])

if(86 < 14) – 这意味着条件为 False,因此它将退出 If 块和第二个 For 循环。

对剩余的迭代执行相同的操作。

使用函数对 C 语言数组进行降序排序

程序 用于对数组进行降序排序,与第一个示例相同。但是,我们使用函数 分离了对数组元素进行降序排序的逻辑。

#include <stdio.h>

int *Sort_ArrayDesc(int arr[], int Size);

int main()
{
	int Array[50], i, j, Size;
	int *arr;
	
	printf("\nPlease Enter the Number of elements in an array  :  ");
	scanf("%d", &Size);
	
	printf("\nPlease Enter %d elements of an Array \n", Size);
	for (i = 0; i < Size; i++)
	{
		scanf("%d", &Array[i]);
    }  
	
	arr = Sort_ArrayDesc(Array, Size);   

	printf("\n **** Array of Elemenst in Descending Order are : ****\n");
	for (i = 0; i < Size; i++)
	{
		printf(" Element at Array[%d] = %d \n", i, arr[i]);
	}	
	return 0;
}

int *Sort_ArrayDesc(int arr[], int Size)
{
	int i, j, temp;
	
	for (i = 0; i < Size; i++)
	{
		for (j = i + 1; j < Size; j++)
		{
			if(arr[i] < arr[j])
			{
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}			
		}
	}
	return arr;	
}

以上示例的输出。

Please Enter the Number of elements in an array  :  6

Please Enter 6 elements of an Array 
25 89 63 48 105 56

 **** Array of Elemenst in Descending Order are : ****
 Element at Array[0] = 105 
 Element at Array[1] = 89 
 Element at Array[2] = 63 
 Element at Array[3] = 56 
 Element at Array[4] = 48 
 Element at Array[5] = 25