数据结构与算法-排序:选择排序
2017-10-14 20:14
363 查看
算法思想:
我就从所有序列中先找到最小的,然后放到第一个位置,之后再看剩余元素中最小的,放到第二个位置……以此类推
查找最小元素的索引,跟第一个位置的元素替换,每次往后找最小的元素的索引
对象排序
创建一个学生对象,重写小于运算符
我就从所有序列中先找到最小的,然后放到第一个位置,之后再看剩余元素中最小的,放到第二个位置……以此类推
查找最小元素的索引,跟第一个位置的元素替换,每次往后找最小的元素的索引
//选择排序 template<typename T> void selectionSort(T arr[],int n){ //优化代码 for(int j=0;j<n;j++){ //T min=arr[j]; //int k=j; int minIdx=j; for(int i=j+1;i<n;i++){ if(arr[i]<arr[minIdx]){ //min=arr[i]; //k=i; minIdx=i; } } //arr[k]=arr[j]; //arr[j]=min; swap(arr[j],arr[minIdx]); }
对象排序
创建一个学生对象,重写小于运算符
#ifndef SOMETHING_H #define SOMETHING_H class Student { // Private section public: string name; int score; friend ostream& operator<<(ostream &os,const Student stu){ os<<"Student :"<<stu.name<<","<<stu.score<<endl; return os; } bool operator<(const Student &otherStu){ return score!=otherStu.score?score>otherStu.score:name<otherStu.name; } }; #endif
#include <iostream> #include "Student.h" /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { Student stuArr[]={{"D",80},{"F",70},{"A",90},{"B",80}}; SortTestHelper::printArray(stuArr,4); SortTestHelper::selectionSort(stuArr,4); SortTestHelper::printArray(stuArr,4); return 0; } template<typename T> void printArray(T arr[],int n){ for(int i=0;i<n;i++){ cout<<arr[i]<<" "; } cout<<endl; return; }
相关文章推荐
- 数据结构与算法系列之一:八大排序之选择排序
- java数据结构与算法-简单排序-选择排序
- 《数据结构与算法》学习笔记6 选择排序
- 数据结构与算法(5)---Java语言实现:选择排序
- java数据结构与算法-简单排序-选择排序
- 新手学习数据结构与算法---直接选择排序
- 数据结构与算法 排序(冒泡,选择,插入)
- 数据结构与算法从零开始系列:冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序、基数排序
- 【DAY.3】PHP数据结构与算法_排序_选择排序
- 数据结构与算法(二)冒泡&&插入&&选择 简单排序
- 数据结构与算法--排序之冒泡、选择、插入、希尔
- 1. C#数据结构与算法 -- 排序(插入,冒泡,希尔,快速,选择)
- 数据结构与算法-----选择排序
- 三、数据结构与算法--排序(冒泡排序、选择排序)
- python数据结构与算法----选择排序
- 数据结构与算法简记:选择排序
- scala数据结构与算法-06-选择排序
- python数据结构与算法 31 选择排序
- 数据结构与算法:七种排序算法总结(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序)
- 数据结构与算法---直接选择排序