首页 > 编程语言 > 详细

选择排序算法

时间:2017-02-26 17:19:21      阅读:370      评论:0      收藏:0      [点我收藏+]

1、什么是选择排序?

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元

素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一

个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

简单选择排序算法基本思想: 例如在一个有n个元素的一个数组中r[n],第一趟在r[0]-r[n-1]中找到其中最小的一个元素,将他与r[0]交换位置;第二趟

在r[1]-r[n-1]中找到最小的一个元素,将他与r[1]交换位置;依次类推,第i趟在r[i-1]-r[n-1]中找到最小的一个元素,将他与r[i-1]

交换位置,直道将数组中所有元素排序完成。

特性: 简单选择排序算法是一种O(n^2)级别的排序算法,也就是说选择排序所需要的时间跟元素个数是成n^2关系的,大家不妨可以试试。

 

2、简单选择排序算法效果演示

技术分享

技术分享

 

 

3、算法实现(基于C++代码)

/* 简单选择排序算法实现 */
template<typename T>
void SelectionSort(T a[], int count)
{
    for (int i = 0; i < count; i++) {
        int minIndex = i;

        /* 在[i, count)区间中找到最小的数 */
        for (int j = i + 1; j < count; j++) {
            if (a[j] < a[minIndex]) {   //  注意我们这里采用的是从小到大的顺序排列
                minIndex = j;
            }
        }

        /* 将找到的最小的数和本区间中最前面的那个数交换位置,即将最小的数放在最前面的位置 */
        std::swap(a[i], a[minIndex]);   
    }
}

 

选择排序算法

原文:http://www.cnblogs.com/deng-tao/p/6444983.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!