10大排序算法之【直接选择排序】

读过托尔斯泰《忏悔录》的人对于人生的态度大多是是豁达的,读过《庄子》的人一定会向往自由。假若将两者加于一位老师身上,那么将会影响一代人。很幸运,今天聆听了校报主编大人从信仰和生命的角度对于教育和社会的思考,诚然,教育最重要的是让一个人掌握独立思考的能力。
感慨一下,哈哈,现在开始切入正题。。。
直接插入排序可以说是最接近人类思维的排序算法了,即先从i=0个数开始依次寻找数组中最小(或最大)的数,找到以后和i互换;然后从i+1到len-1中找剩下的最小(或最大)的数,找到以后和第i+1个互换。。直到指针指向第len-1个数时排序完成。

include<iostream>

include<vector>

using namespace std;

class SelectSort{

private:
    int len;
    vector<int> list;
public:
    SelectSort(vector<int> _list, int _len);
    void select_sort();
    void swap(int, int);
    void out();

};

SelectSort::SelectSort(vector<int>_list, int _len){

for(int i=0; i<_len; i++) list.push_back(_list[i]);
this->len = _len;

}

void SelectSort::select_sort(){

int k;

for(int i=0; i<len; i++){
    
    k=i;
    for(int j=i+1; j<len; j++){
        
        if(list[k]>list[j]) k=j;
    }
    
    swap(i,k);
}

}

void SelectSort::swap(int a, int b){

int temp = list[a];
list[a]= list[b];
list[b]= temp;

}

void SelectSort::out(){

for(int i=0; i<len; i++) cout<<list[i];

}

int main(){

int array[9] = {9,8,7,6,5,4,3,2,1};
vector<int> list;
for(int i=0; i<9; i++) list.push_back(array[i]);
SelectSort mazhe(list,9);
mazhe.select_sort();
mazhe.out();

}

    原文作者:编码的哲哲
    原文地址: https://www.jianshu.com/p/689466106a59
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞