选择排序(C++实现)
2022/7/21 14:22:58
本文主要是介绍选择排序(C++实现),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 对选择排序的理解
每次选择最小的值往前放。
比如9,3,8排序:每次选择最小的数放在前面,第一次选3放在第一位,第二次选8放在第三位,第三次选择9放在第三位,直到排序结束。
代码:(举例int型数据排序)
#include <iostream> #include <algorithm> 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; }
- 使用模板(泛型)编写选择排序
Student.h:#ifndef INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H #define INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H #include <iostream> #include <string> 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: "<<student.name<<" "<<student.score<<endl; return os; } }; #endif //INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H
main.cpp:
#include <iostream> #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<<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; // 测试模板函数,传入自定义结构体Student数组 Student d[4] = { {"D",90} , {"C",100} , {"B",95} , {"A",95} }; selectionSort(d,4); for( int i = 0 ; i < 4 ; i ++ ) cout<<d[i]; cout<<endl; return 0; }
这篇关于选择排序(C++实现)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享