码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-07-09 14:52:29      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

#1,选择排序简介

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

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

 

#2,c++实现算法

#include<iostream>
#include<vector>

using namespace std;

void SelectSort(vector<int> &A);
void Select(vector<int> &A, int start, int stop);
void swapv(int &a, int &b);

int main(){
  vector<int> array = { 13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11 };

  SelectSort(array);

  system("Pause");
  return 0;
}

void SelectSort(vector<int> &A){
  int len=A.size();

  for (int i = 0; i < len; i++)
  Select(A,i,len-1);

}

void Select(vector<int> &A, int start, int stop){
  int val=A[start];
  int len=A.size();
  int pos=0;

  for (int i = start; i < stop + 1; i++)
    if(A[i]<val){
      pos=i;
      val=A[i];
    }

  if(pos!=0)
  swapv(A[start],A[pos]);
}

void swapv(int &a, int &b){
  a=a+b;
  b=a-b;
  a=a-b;
}

 

#3,程序实现结果

技术分享

 

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

标签:

原文地址:http://www.cnblogs.com/sophia-hxw/p/5655673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!