为了更好地理解,我们始终建议您学习下面列出的C语言编程基础主题
在这个C程序中,我们需要使用**选择排序**来对元素进行排序。选择排序是C语言编程中最简单的排序技术之一。在选择排序中,我们有两个子列表,一个是已排序的,另一个是待排序的。最初,已排序列表为空,未排序列表包含所有元素,然后开始排序以找到最小或最大的元素。根据顺序,将最小元素与列表中最左边的元素交换位置。现在,已排序子列表包含一个元素,最终所有元素都会从未排序列表中进入已排序子列表。在这个C程序中,我们使用了两个函数,一个用于找到最大元素,另一个用于按照我们需要的顺序对元素进行排序。`findmax` 函数找到数组中最大的元素,然后我们调用 `exchange array` 函数来交换位置。
这个C程序的逻辑是:首先读取用户想要排序的数字数量。然后使用`for`循环将数字读入数组。接着显示输入数组元素。之后,我们必须开始排序过程。为了排序,我们调用`exchange()`函数。`exchange()`函数首先通过调用另一个函数`findmax()`找出数组中最大的数字,并将最大的数字放在数组的最后一个位置。现在数组的最后一个位置已排序。现在我们将继续对数组的`n-1`个元素进行排序。如果找到倒数第二个元素,我们将重复对`n-2`个元素进行相同的过程,依此类推。最后,我们将得到最小的数字在顶部。
步骤 1:包含头文件以在 C 程序中使用内置头文件。
步骤2:声明一个数组和一个变量**N**。数组用于存储数字,**N**用于存储数字的限制。
步骤3:声明函数`int findmax(int b[10], int k)`和`void exchang(int b[10], int k)`。
步骤4:使用`for`循环将数组元素读入数组。
步骤5:使用`for`循环显示数组元素。
步骤6:调用函数`exchang(array, N)`来对数组进行排序。
步骤7:现在使用`for`循环显示已排序的数组元素。
函数`int findmax(int b[10], int k)`
步骤1:声明变量**max**、**j**,并设置**max=0**。
步骤2:使用`for`循环,**j=1**,条件**j<=k**,执行步骤3。
步骤3:检查**b[j] > b[max]**,如果为真,则**max=j**。重复步骤2。
步骤4:返回**max**。
函数`void exchang(int b[10], int k)`
步骤1:声明变量`temp`、`big`、`j`。
步骤2:使用`for`循环,`j=k-1`,条件`j>=1`,执行步骤3。
步骤3:通过调用`findmax(b,j)`找出最大数字的位置。
步骤4:现在使用**交换**方法将最大元素放置在`j`的位置。
步骤5:将`j`减1,检查条件`j>=1`并重复步骤3。
#include <stdio.h>
void main()
{
int array[10];
int i, j, N, temp;
int findmax(int b[10], int k); /* function declaration */
void exchang(int b[10], int k);
printf("Enter the value of N\n");
scanf("%d", & N);
printf("Enter the elements one by one\n");
for (i = 0; i < N; i++)
scanf("%d", & array[i]);
printf("Input array elements...\n");
for (i = 0; i < N; i++)
{
printf("%d\n", array[i]);
}
/* Selection sorting begins */
exchang(array, N);
printf("Sorted array is...\n");
for (i = 0; i < N; i++)
{
printf("%d\n", array[i]);
}
} /* End of main*/
/* function to find the maximum value */
int findmax(int b[10], int k)
{
int max = 0, j;
for (j = 1; j <= k; j++)
{
if (b[j] > b[max])
{
max = j;
}
}
return (max);
}
void exchang(int b[10], int k)
{
int temp, big, j;
for (j = k - 1; j >= 1; j--)
{
big = findmax(b, j);
temp = b[big];
b[big] = b[j];
b[j] = temp;
}
return;
}
Enter the value of N 5 Enter the elements one by one 45 12 90 33 78 Input array elements 45 12 90 33 78 Sorted array is 12 33 45 78 90