C语言数组升序排序程序

如何编写一个C语言程序,使用for循环和函数对数组进行升序排序,并附带示例。

使用for循环对数组进行升序排序的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 Ascending Order are : ****\n");
	for (i = 0; i < Size; i++)
	{
		printf("%d\t", Array[i]);
	}
	
	return 0;
}
C Program to Sort Array in Ascending Order 1

在此升序数组排序程序中,For循环将确保数字介于0和最大大小值之间。在此示例中,它将从0到3。

让我按迭代次数向您展示程序中的嵌套For循环。

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

第二个For循环 – 第一次迭代:for(j = 0 + 1; 1 < 4; 1++)
For循环内的条件为True,因此编译器将进入If语句
if(19 > 25)
这意味着条件为False,因此它将退出If块,j值将增加1。

第二个For循环 – 第二次迭代:for(j = 2; 2 < 4; 2++)

For循环内的条件为True。因此,C语言编译器将进入If语句

if(19 > 4) – 这意味着条件为True。
temp = 19
Array[i] = 4
Array[j] = 19

现在,数组将是4 25 19 21。接下来,j将增加1。

升序数组排序C语言程序的第三次迭代:for(j = 3; 3 < 4; 3++)
For循环内的条件为True,因此编译器将进入If语句:if(Array[0] > Array[3])

if(4 > 21) – 这意味着条件为False。因此,它将退出If块,j值将增加1。

第四次迭代:for(j = 4; 4 < 4; 4++)
其中的条件为False。因此,编译器将退出For循环。接下来,i值增加1。

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

第二个For循环 – 第一次迭代:for(j = 1 + 1; 2 < 4; 2++)
其中的条件为True,因此编译器将进入If语句。
if(25 > 19) – 这意味着条件为True。
temp = 25
[i] = 19
[j] = 25
现在数组将是4 19 25 21。接下来,j将增加1。

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

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

对数组排序程序的其余迭代执行相同的操作。

使用函数对数组进行升序排序的C语言程序

数组排序程序与第一个示例相同。但是,我们使用函数将升序排序的逻辑分开了。

#include <stdio.h>

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

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

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

int *Sort_ArrayAsc(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  :  5

Please Enter 5 elements
25 89 4 12 15

 **** Array of Elements in Ascending Order are : ****
4 
12 
15 
25 
89 

评论已关闭。