十大排序算法之(三)——选择排序

    xiaoxiao2021-04-15  27

    #1,选择排序简介

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

    选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面),我个人认为,按照数值来讲,这两个5没差别,所以这是不是决定这个算法不稳定还有待商榷。

     

    #2,c++实现算法

    1 #include<iostream> 2 #include<vector> 3 4 using namespace std; 5 6 void SelectSort(vector<int> &A); 7 void Select(vector<int> &A, int start, int stop); 8 void swapv(int &a, int &b); 9 10 int main(){ 11   vector<int> array = { 13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11 }; 12 13   SelectSort(array); 14 15   system("Pause"); 16   return 0; 17 } 18 19 void SelectSort(vector<int> &A){ 20   int len=A.size(); 21 22   for (int i = 0; i < len; i++) 23   Select(A,i,len-1); 24 25 } 26 27 void Select(vector<int> &A, int start, int stop){ 28   int val=A[start]; 29   int len=A.size(); 30   int pos=0; 31 32   for (int i = start; i < stop + 1; i++) 33     if(A[i]<val){ 34       pos=i; 35       val=A[i]; 36     } 37 38 39   if(pos!=0) 40   swapv(A[start],A[pos]); 41 } 42 43 void swapv(int &a, int &b){ 44   a=a+b; 45   b=a-b; 46   a=a-b; 47 } 选择排序

     

    #3,程序实现结果

     

    转载请注明原文地址: https://ju.6miu.com/read-671599.html

    最新回复(0)