推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各类堆、各类队列、各类列表、各类树、各类图、各类排序等等几十篇的样子。mysql
选择排序是一种很简单直观的排序算法,主要思想就是每次从待排序的元素中选择出最大或最小的那个元素,而后将其放至已排序序列的末尾,直到所有待排序序列都排序完毕。算法
假设咱们有以下5个元素,分别为84,25,59,71,62,如今进行选择排序。sql
第一趟,此时待排序序列为84,25,59,71,62,任务是从中找到最小元素,并与第一个元素调换做为已排序序列的第一个元素。最小元素能够经过逐一比较找到。头两个元素比较,较小的是25,网络
接着下一个元素59与25比较,较小的是25,数据结构
接着下一个元素71与25比较,较小的是25,并发
接着下一个元素62与25比较,较小的是25,完成所有元素比较,最小元素为25。机器学习
最小元素对调到原来待排序序列的第一个位置,便是放到已排序序列的尾部,此时已排序序列只有一个元素。而下一趟的待排序序列为84,59,71,62,继续寻找最小元素,84与59比较,59较小,数据结构和算法
接着下一个元素71与59比较,较小的是59,学习
接着下一个元素62与59比较,较小的是59,完成所有元素比较,最小元素为59。.net
最小元素对调到原来待排序序列的第一个位置,便是放到已排序序列的尾部,此时已排序序列有两个元素。而下一趟的待排序序列为84,71,62,继续寻找最小元素,84与71比较,71较小,
接着下一个元素62与71比较,较小的是62,完成所有元素比较,最小元素为62。
最小元素对调到原来待排序序列的第一个位置,便是放到已排序序列的尾部,此时已排序序列有三个元素。而下一趟的待排序序列为71,84,继续寻找最小元素,71与84比较,71较小,
71为最小元素,对调到原来待排序序列的第一个位置,便是放到已排序序列的尾部,此时已排序序列有四个元素。下一趟只待排序序列只剩一个元素了,无需继续比较,直接添加到已排序序列的尾部,完成整个排序工做。
排序的稳定性主要是指在待排序序列中,存在多个具备相同值的元素,若是通过某种排序算法后这些相同值的元素之间相对次序保持不变,则称该排序算法是稳定的。而若是它们之间相对次序打乱了,则为不稳定。
选择排序为不稳定排序算法。
假设咱们要排序的序列为84,25,84,71,62,这其中包含了两个值为84的元素,按照选择排序方法对其进行排序。
第一趟排序,元素25和第一个元素84对调,
第二趟排序,元素62和第一个元素84对调,
第三趟排序,元素71和第二个元素84对调,
最终的状态以下,能够看到两个值为84的元素的次序已经变化了。
-------------推荐阅读------------
个人开源项目汇总(机器&深度学习、NLP、网络IO、AIML、mysql协议、chatbot)
跟我交流,向我提问:
欢迎关注: