zoukankan      html  css  js  c++  java
  • 选择排序之简单选择排序算法

    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)

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

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

    /******************************** 简单选择排序算法实现 ***********************************/
    template<typename T>
    void selectionSort (T a[], int count)
    {
        //  对a[i...count-1]进行循环遍历
        for (int i = 0; i < count; i++) {
            int minIndex = i;             // 最小元素位置索引值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]);   
        }
    }
    /*******************************************************************************************/
  • 相关阅读:
    apache php 整合
    ide vim 设置
    saas
    总结一些做人的标准
    关于项目和产品
    Page.ClientScript.RegisterArrayDeclaration
    span或者input的disabled(小技巧)
    JS屏蔽鼠标右键的两种方法(小技巧)
    js使用对象(小技巧)
    各种CMS
  • 原文地址:https://www.cnblogs.com/deng-tao/p/6444983.html
Copyright © 2011-2022 走看看