赞
踩
在计算机科学中,排序算法是一种非常基础且重要的算法。简单选择排序(Selection Sort)作为其中的一种,因其实现简单、易于理解而受到许多初学者的喜爱。本文将详细介绍简单选择排序的原理、实现过程,并通过C/C++代码示例来加深理解。
简单选择排序的基本思想是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
算法步骤:
这样经过 n-1 次遍历后,整个序列就排好序了。
算法分析:
以下是简单选择排序的C代码实现:
#include <stdio.h> void selectionSort(int arr[], int n) { int i, j, min_index, temp; for (i = 0; i < n - 1; i++) { // 初始化最小值索引 min_index = i; // 遍历未排序序列,找到最小值索引 for (j = i + 1; j < n; j++) { if (arr[j] < arr[min_index]) { min_index = j; } } // 交换最小值与未排序序列的第一个元素 if (min_index != i) { temp = arr[i]; arr[i] = arr[min_index]; arr[min_index] = temp; } } } int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); selectionSort(arr, n); printf("Sorted array: \n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
代码解析
下面是用 C++ 编写的简单选择排序的示例代码:
#include <iostream> void selectionSort(int arr[], int n) { int i, j, minIndex; for (i = 0; i < n - 1; i++) { // 找到未排序部分的最小元素 minIndex = i; for (j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 将最小元素与当前位置交换 if (minIndex != i) { std::swap(arr[i], arr[minIndex]); } } } int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); std::cout << "Original array:" << std::endl; for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; selectionSort(arr, n); std::cout << "Sorted array:" << std::endl; for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; return 0; }
解析示例代码:
结果:
运行上述代码,输出如下结果:
Original array:
64 25 12 22 11
Sorted array:
11 12 22 25 64
这证明了选择排序成功地将输入的数组从小到大进行了排序。
简单选择排序虽然在大数据量下效率不高,但它易于理解和实现,是理解排序算法基本思想的良好起点。在实际应用中,如果数据量较小或者对排序稳定性要求不高,选择排序可以作为一种简单有效的选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。