美文网首页
算法解析之选择排序

算法解析之选择排序

作者: dongwenbo | 来源:发表于2017-03-29 09:44 被阅读14次
选择排序

算法思路:
1、整个序列分为待排序部分和已排序部分
2、遍历待排序部分找到最小值,与待排序部分的第一个值交换
3、重复2直到整个序列有序

C++:

//交换值
void swap(int *a,int *b){
    int temp = *a;
    *a = *b;
    *b = temp;
}
//选择排序
void selectionSort(int arr[],int n){
//重复2步骤,重复n-1,交换n-1次
    for (int i = 0; i < n-1; i++) {
        //需要先用一个变量记录最小值索引,初始值为重复次数i(未排序部分的第一个值)
        int minIndex = i;
        //2步骤,从待排序部分找出最小值的序列
        for (int j = i; j < n; j++) {
            if (arr[j]<arr[minIndex]) {
                minIndex = j;
            }
        }
        //交换
        swap(&arr[i], &arr[minIndex]);
    }
    //整个序列有序
}

加入模板函数(泛型)更加C++:

template <typename T>
void swap(T *a,T *b){
    T temp = *a;
    *a = *b;
    *b = temp;
}

template <typename T>
void selectionSort(T arr[],int n){
    for (int i = 0; i < n; i++) {
        int minIndex = i;
        for (int j = i; j < n; j++) {
            if (arr[j]<arr[minIndex]) {
                minIndex = j;
            }
        }
        swap(&arr[i], &arr[minIndex]);
    }
}

如果要排序自定义类型,必须重载比较操作符<>

相关文章

  • 算法解析之选择排序

    算法思路:1、整个序列分为待排序部分和已排序部分2、遍历待排序部分找到最小值,与待排序部分的第一个值交换3、重复2...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 3.1-选择排序-简单选择排序

    参考链接 选择排序:简单选择排序(Simple Selection Sort) 白话经典算法系列之四 直接选择排序...

  • 算法理解之排序-选择排序

    算法理解之排序-选择排序 选择排序是一种简单直观的排序算法, 以当前点为锚点, 向后依次进行比较所有未排序元素, ...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • 让面试官满意的排序算法(图文解析)

    让面试官满意的排序算法(图文解析) 这种排序算法能够让面试官面露微笑 这种排序算法集各排序算法之大成 这种排序算法...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • 算法之 排序算法之 选择排序

    简介 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 实现步骤 ...

  • 『算法』之 初级排序算法总结

    本篇文章同时收录在我的个人博客:『算法』之 初级排序算法总结 选择排序 一种最简单的排序算法:首先,找到数组中最小...

网友评论

      本文标题:算法解析之选择排序

      本文链接:https://www.haomeiwen.com/subject/jetsottx.html