三分钟快速记住 选择排序算法!

Posted 程序员编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三分钟快速记住 选择排序算法!相关的知识,希望对你有一定的参考价值。

上一篇文章:

选择排序:

先上舞蹈


再上动画

(动画演示)

三分钟快速记住 选择排序算法!给  "6 5 4 3 2 1"  6个数字增序排序的流程。


大体过程:

    我们把一串待排序的数字分为已排序、和待排序的两类(当然,初始状态全都是待排序的)。然后每一趟将待排序中的最小值和待排序中第1个元素交换,此时待排序中第1个元素就能归到已排序中。将这个流程进行 6 趟就完成了排序。


选择排序原理:

      ①、初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列

  ②、再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾

  ③、以此类推,直到所有元素均排序完毕。


选择排序与冒泡排序区别

      选择排序是在剩下的待排序数字里面找个最小的再交换; 冒泡排序是看见小的就交换。

选择排序代码:

#include <cstdio> /* 交换函数 * 传入:待交换两元素的地址 */void swap(int *x, int *y) { int temp = *x; *x = *y; *y = temp;} /* 增序的选择排序 * 传入:待排序数组a、数组元素个数n */void selectSort(int a[], int n) { /* 进行n趟操作 */ for(int i = 0; i < n; i++) {  int min_index = i; //记录待排序部分中最小值的下标  /* 扫描待排序部分,知道到最小值的下标 */ for(int j = i; j < n; j ++) { if(a[j] < a[min_index]) min_index = j; //时刻更新最小值下标 } swap(a + i,a + min_index); //交换 当前位 和 待排序部分中最小值 }} int main() { int a[] = {5,2,3,4,15,16,100,23,88}; selectSort(a, 9);  for(int i = 0; i < 9; i++) printf("%d ", a[i]); //输出结果:2 3 4 5 15 16 23 88 100}


获取更多学习资料

视频 | 面试 | 技术 | 电子书 

程序员编程:javaje

小编微信:BW22266688

我知道你“在看”

以上是关于三分钟快速记住 选择排序算法!的主要内容,如果未能解决你的问题,请参考以下文章

十分钟记住快速排序(快速排序快速记忆方法)

10分钟看懂10大经典算法(Swift代码实现)

三分钟彻底理解快速排序

1秒记住快速排序!

三分钟彻底理解选择排序

一行Python代码搞定快速排序算法