在这里,我们将在 C++ 中实现选择排序。该程序旨在利用选择排序技术对数组进行升序排列。
选择排序是 C++ 中对数组元素进行排序的方法之一。它的工作原理是比较元素并找到最小的元素,然后将其与数组的第一个位置交换。现在第一个元素已排序,在第二趟中,它将从第二个位置开始检查每个元素以找到最小的元素,并将其与第二个位置的元素交换。这个过程会重复多次迭代,直到数组完全排序。
我们可以通过一个例子轻松学习选择排序,
该程序会提示用户输入数组的大小。输入的数字将存储在变量 tot 中。然后要求用户输入元素。元素存储在数组 arr[50] 中。我们以一个例子来说明。如果用户输入 5 作为大小,那么 tot=5;当用户输入 5 个元素时,它们会按以下方式存储在数组中:
Arr[0] = 10
Arr[1] = 1
Arr[4] = 2
现在开始执行 for 循环以执行选择排序。
for(i=0; i<(tot-1); i++)
{
chk=0;
small = arr[i];
i 初始化为 0;条件 i<(tot-1) 计算结果为真(例如:i<4),程序流程进入循环内部。在循环内部,初始化变量 chk = 0; 数组 arr[i] 中的元素初始化为 small。 我们假设第一个元素(例如:10)是数组中最小的元素,并将其与其余索引处的元素进行比较。
每次我们假设当前索引处的元素是最小的元素,然后将其与其余元素进行比较,如果发现它大于任何元素,那么我们就将一个新元素初始化为最小的元素。
现在内部 for 循环开始,j 初始化为 i+1,条件计算结果为真,程序流程进入循环内部。
for(j=(i+1); jarr[j])
{
small = arr[j];
chk++;
index = j;
}
}
在此循环内部,条件 small>arr[j](如果)计算结果为真,因此程序流程进入 if 语句的主体。arr[j] 被初始化为 small。chk 的值递增。因此 chk=1。最后,j 被初始化为 index。现在 j 的值递增。
条件再次评估为真,程序流程再次进入循环。这个过程一直持续到这个 for 循环的条件评估为假。退出此循环后,条件 chk!=0(如果)评估为真,因此 arr[i] 或 arr[0] 被初始化为 temp,small 被初始化为 arr[i] 或 arr[0],最后,temp 被初始化为 arr[index]。现在程序流程进入外部 for 循环的更新部分并递增 i 的值。因此 i=1。条件再次被评估。
也就是说,条件 i<(tot-1) 再次评估为真,因此程序流程再次进入循环。这个过程一直持续到条件评估为假。通过这种方式,实现了选择排序。
步骤 1: 调用头文件 iostream。
步骤 2: 使用 namespace std.
步骤 3: 打开整数类型 main 函数;int main()。
步骤 4: 声明整数类型变量 tot, arr[50], I, j, small, chk, index;
步骤 5: 要求用户输入数组的大小
步骤 6: 将数字存入变量 tot;
步骤 7: 要求用户输入数字;
步骤 8: 将数字存入数组 arr[50];
步骤 9: for i =1 到 tot-1
步骤 10: 设置 chk = 0;
步骤 11: 设置 small = arr[i];
步骤 12: for j = i+1 到 tot-1 重复
如果 (small>arr[j])
设置 small = arr[j]
递增 chk;
设置 index = j
步骤 13: 交换 arr[i] 和 arr[index];
步骤 14: 打印排序后的数组;
步骤 15: 退出;
#include<iostream>
using namespace std;
int main()
{
int tot, arr[50], i, j, temp, small, chk, index;
cout<<"Enter the Size of Array: ";
cin>>tot;
cout<<"Enter "<<tot<<" Array Elements: ";
for(i=0; i<tot; i++)
cin>>arr[i];
for(i=0; i<(tot-1); i++)
{
chk=0;
small = arr[i];
for(j=(i+1); j<tot; j++)
{
if(small>arr[j])
{
small = arr[j];
chk++;
index = j;
}
}
if(chk!=0)
{
temp = arr[i];
arr[i] = small;
arr[index] = temp;
}
}
cout<<"\nSorted Array is:\n";
for(i=0; i<tot; i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
}
Enter the Size of Array: 6 Enter 6 Array Elements: 10 2 36 5 45 36 Sorted Array is: 2 5 10 36 36 45