一、什么是选择排序?html
选择排序(Selection sort)是一种简单直观的排序算法。它的工做原理是每一次从待排序的数据元素中算法
选出最小(或最大)的一个元素,存放在序列的起始位置,直到所有待排序的数据元素排完。 选择排序是数组
不稳定的排序方法(好比序列[5, 5, 3]第一次就将第一个[5]与[3]交换,致使第一个5挪动到第二个5spa
后面)。3d
简单选择排序算法基本思想: 例如在一个有n个元素的一个数组中r[n],第一趟在r[0]-r[n-1]中找到其中code
最小的一个元素,将他与r[0]交换位置;第二趟在r[1]-r[n-1]中找到最小的一个元素,将他与r[1]交换htm
位置;依次类推,第i趟在r[i-1]-r[n-1]中找到最小的一个元素,将他与r[i-1]交换位置,直道将数组中blog
全部元素排序完成。排序
时间复杂度: O(n^2)索引
二、简单选择排序算法效果演示
三、算法实现(基于C++代码)
/******************************** 简单选择排序算法实现 ***********************************/ template<typename T> void selectionSort (T a[], int count) { // 对a[i...count-1]进行循环遍历 for (int i = 0; i < count; i++) { int minIndex = i; // 最小元素位置索引值minIndex初始化为i /* 在[i, count)区间中找到最小的数 */ for (int j = i + 1; j < count; j++) { if (a[j] < a[minIndex]) { minIndex = j; } } /* 将找到的最小的元素和本区间中最前面的那个数交换位置,即将最小的数放在最前面的位置 */ std::swap(a[i], a[minIndex]); } } /*******************************************************************************************/