selection_Sort(选择排序算法)
数据结构与算法(c++)
1.选择排序算法
选择排序算法是在一组数中有选择的从大到小或者小到大进行排序,其逻辑是:
在一组数据中从第一个数开始比较出该组数据中最小数,然后将其与第一个数互换位置,然后第二个数再依次从后面的数再进行比较,找出全数组中第二小的数,再与第二个数互换位置,剩余的数依次类推,即可得出数组的排序。列如:
数组{6,3, 5, 9, 4, 7, 8}
首先以[0 , 7)分别为上列数组元素的索引
第一次比较以i = 0(就是6的索引)将6与{3, 5, 9, 4, 7, 8}中的元素进行比较(如:6大于3,则将比较索引1赋值给i,再讲 i = 1的数与后面的数进行比较),找出的最小值为3,则将3与6位置互换,依次就完成了选择排序算法的整个逻辑。其代码实现过程如下(c++):
#include <iostream>
using namespace std;
template<typename T>
void selectionSort(T arr[], int n){
for(int i = 0 ; i < n ; i ++){
int minIndex = i;
for( int j = i + 1 ; j < n ; j ++ )
if( arr[j] < arr[minIndex] )
minIndex = j;
swap( arr[i] , arr[minIndex] );
}
}
如下是测试:
int main() {
// 测试模板函数,传入整型数组
int a[10] = {2,6,12,32,54,77,53,45,31,200};
selectionSort( a , 10 );
for( int i = 0 ; i < 10 ; i ++ )
cout<<a[i]<<" ";
cout<<endl;
// 测试模板函数,传入浮点数数组
float b[4] = {4.4,3.3,2.2,1.1};
selectionSort(b,4);
for( int i = 0 ; i < 4 ; i ++ )
cout<<b[i]<<" ";
cout<<endl;
// 测试模板函数,传入字符串数组
string c[4] = {"D","C","B","A"};
selectionSort(c,4);
for( int i = 0 ; i < 4 ; i ++ )
cout<<c[i]<<" ";
cout<<endl;
return 0;
}
其输出结果为:
本作品采用《CC 协议》,转载必须注明作者和本文链接