- #include
- #include
-
- using namespace std;
-
- void selectionSort(int arr[], int n) {
-
- for (int i = 0; i < n; i++) {
- // 寻找[i, n)区间里的最小值
- 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] = { 10,9,8,7,6,5,4,3,2,1 };
- selectionSort(a, 10);
- for (int i = 0; i < 10; i++)
- cout << a[i] << " ";
- cout << endl;
-
- return 0;
- }
-
- #ifndef INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H
- #define INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H
-
- #include
- #include
-
- using namespace std;
-
-
- struct Student{
-
- string name;
- int score;
-
- // 重载小于运算法,定义Student之间的比较方式
- // 如果分数相等,则按照名字的字母序排序
- // 如果分数不等,则分数高的靠前
- bool operator<(const Student& otherStudent){
- return score != otherStudent.score ?
- score > otherStudent.score : name < otherStudent.name;
- }
-
- friend ostream& operator<<(ostream &os, const Student &student){
-
- os<<"Student: "<
" "< - return os;
- }
- };
-
- #endif //INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H
main.cpp:
- #include
- #include "Student.h"
-
- 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] = {10,9,8,7,6,5,4,3,2,1};
- selectionSort( a , 10 );
- for( int i = 0 ; i < 10 ; i ++ )
- cout<" ";
- cout<
-
- // 测试模板函数,传入浮点数数组
- float b[4] = {4.4,3.3,2.2,1.1};
- selectionSort(b,4);
- for( int i = 0 ; i < 4 ; i ++ )
- cout<" ";
- cout<
-
- // 测试模板函数,传入字符串数组
- string c[4] = {"D","C","B","A"};
- selectionSort(c,4);
- for( int i = 0 ; i < 4 ; i ++ )
- cout<
" "; - cout<
-
- // 测试模板函数,传入自定义结构体Student数组
- Student d[4] = { {"D",90} , {"C",100} , {"B",95} , {"A",95} };
- selectionSort(d,4);
- for( int i = 0 ; i < 4 ; i ++ )
- cout<
- cout<
-
- return 0;
- }
-
相关阅读:
[JavaWeb基础(三)]HTTP请求消息与登录案例分析
【数据结构】-----二叉树(递归、层次实现二叉树的遍历)
简单聊聊 Kafka
思腾云计算
[go][转载]vscode配置完go跑个helloworld例子
【激光SLAM】基于滤波的激光SLAM方法(Grid-based)
DispatcherServlet类源码简介说明
GC FullGC
Apache Ranger安装部署
【微信公众号】一、获取 access_token
-
原文地址:https://blog.csdn.net/mjj1024/article/details/125905474