在 C++ 中实现选择排序的 C++ 程序


2023年1月31日, Learn eTutorial
1586

在这里,我们将在 C++ 中实现选择排序。该程序旨在利用选择排序技术对数组进行升序排列。

C++ 中的选择排序

选择排序是 C++ 中对数组元素进行排序的方法之一。它的工作原理是比较元素并找到最小的元素,然后将其与数组的第一个位置交换。现在第一个元素已排序,在第二趟中,它将从第二个位置开始检查每个元素以找到最小的元素,并将其与第二个位置的元素交换。这个过程会重复多次迭代,直到数组完全排序。

我们可以通过一个例子轻松学习选择排序,

  • 10, 16, 8, 15
  • 在第一趟中,排序算法从第一个位置(即 12)开始,检查数组的所有元素并找到最小的元素 8,然后将其与第一个元素 12 交换。
  • 8, 16,10, 15
  • 在第二趟中,算法跳过第一个位置,从第二个位置(即 16)开始,检查数组中所有其他元素以找到最小的元素(现在是 10),然后交换 10 和 16。
  • 8, 10, 16,15
  • 在第三趟中,算法检查第三个元素,并在数组的剩余元素中查找最小的元素,并将其与第三个位置交换,这里 16 和 15 被交换。
  • 8, 10, 15, 16
  • 现在数组已完全排序。

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: 退出;

C++ 源代码

                                          #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