编写一个 C 语言程序,使用选择排序对数组进行排序,并提供 for 循环、while 循环和函数的实际示例。此程序使用嵌套 for 循环通过选择排序对数组元素进行排序。
// using nested for loop
#include <stdio.h>
int main()
{
int a[100], number, i, j, temp;
printf("\n Please Enter the total Number of Elements : ");
scanf("%d", &number);
printf("\n Please Enter the Array Elements : ");
for(i = 0; i < number; i++)
scanf("%d", &a[i]);
for(i = 0; i < number; i++) {
for(j = i + 1; j < number; j++) {
if(a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
printf("\n Selection Sort Result : ");
for(i = 0; i < number; i++) {
printf(" %d \t", a[i]);
}
printf("\n");
return 0;
}

在此 C 语言选择排序程序中,For 循环将确保数字在 1 到最大尺寸 - 1 之间。
第一个 For 循环 – 第一次迭代:for(i = 0; 0 < 4; 0++)
条件为 True,因此它将进入第二个 for 循环。
第二个 For 循环 – 第一次迭代:for(j = 1; 1 < 4; 1++) – 此条件为 True
if(a[0] > a[1]) => (10 > 9) – 此条件为 True
temp = 10
a[i] = a[j] => a[0] = 9
a[j] = temp => a[1] = 10
现在数组将是 9 10 0 11。
第二个 For 循环 – 第二次迭代:for(j = 2; 2 < 4; 2++) – True
if(a[0] > a[2]) => (9 > 0) – 条件为 True
temp = a[0] => temp = 9
a[0] = a[2] => a[0] = 0
a[2] = temp => a[2] = 9
现在数组将是 0 10 9 11。
为第二个 for 循环的其余迭代执行相同操作。接下来,使用第一个 C 语言编程 for 循环重复相同的操作。
使用 for 循环进行选择排序的 C 语言程序
在此选择排序程序中,我们使用了略有不同的方法来演示这一点。
#include <stdio.h>
int main()
{
int a[100], num, min, i, j, temp;
printf("\n Please Enter the total Elements : ");
scanf("%d", &num);
printf("\n Please Enter the Array Elements : ");
for(i = 0; i < num; i++)
scanf("%d", &a[i]);
for(i = 0; i < num - 1; i++) {
min = i;
for(j = i + 1; j < num; j++) {
if(a[min] > a[j]) {
min = j;
}
}
if(min != i)
{
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
printf("\n Result : ");
for(i = 0; i < num; i++) {
printf(" %d \t", a[i]);
}
printf("\n");
return 0;
}
Please Enter the total Elements : 5
Please Enter the Array Elements : 10 2 19 0 10
Result : 0 2 10 10 19
使用 While 循环的选择排序程序
在此程序中,我们将 for 循环替换为 While 循环。
#include <stdio.h>
int main()
{
int a[100], val, i, j, temp;
printf("\n Please Enter the total No. of Elements : ");
scanf("%d", &val);
printf("\n Please Enter the Array Elements : ");
for(i = 0; i < val; i++)
scanf("%d", &a[i]);
i = 0;
while( i < val) {
j = i + 1;
while( j < val) {
if(a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
j++;
}
i++;
}
printf("\n Result : ");
for(i = 0; i < val; i++) {
printf(" %d \t", a[i]);
}
printf("\n");
return 0;
}
Please Enter the total No. of Elements : 7
Please Enter the Array Elements : 20 0 25 19 4 22 16
Result : 0 4 16 19 20 22 25
使用函数的 C 选择排序程序
此 程序 使用 函数 来分离逻辑,并使用 指针 来 交换 和重排数组元素,使用此选择排序。
#include <stdio.h>
void Swap(int *x, int *y) {
int Temp;
Temp = *x;
*x = *y;
*y = Temp;
}
void selFunc(int a[], int number) {
int i, j;
for(i = 0; i < number; i++) {
for(j = i + 1; j < number; j++) {
if(a[i] > a[j]) {
Swap(&a[i], &a[j]);
}
}
}
}
int main()
{
int a[100], number, i;
printf("\n Please Enter the total Number of Elements : ");
scanf("%d", &number);
printf("\n Please Enter the Array Elements : ");
for(i = 0; i < number; i++)
scanf("%d", &a[i]);
selFuc(a, number);
printf("\n Result : ");
for(i = 0; i < number; i++) {
printf(" %d \t", a[i]);
}
printf("\n");
return 0;
}
Please Enter the total Number of Elements : 6
Please Enter the Array Elements : 12 3 0 22 19 -8
Result : -8 0 3 12 19 22