冒泡排序和选择排序区别_简单选择排序C++实现
简单选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,第一次从下标为0的开始,将下标为0的这个数与后面的n-1个进行比较;找出最小或者最大的放在下标为0的这个位置;第二次从下标为1的开始比较;查询剩下的最大或者最小值;放在下标为1的位置;直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
概念比较简单,我们直接看代码:
voidvoid
选择排序和冒泡排序有点类似,都是将每次循环中的最值移动到数组的一端,可能会令一些人感到混乱,但其实区别地方还是挺多的。
(1)冒泡排序是比较相邻位置的两个数,而选择排序是将一个数与它后面的所有数进行比较,找最大值或者最小值;
(2)冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;
(3)两者不同的比较方式决定了冒泡排序是稳定排序算法,选择排序是不稳定排序算法,举个例子对于数组{ 5,8,5,2,9 } ,对于选择排序,第一遍选择第一个元素5会和2交换,那么原序列中2个5的相对位置前后顺序就破坏了)。
将两种排序算法的动态图放在一起看,会比较容易理解。
选择排序:
冒泡排序:
简单选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,第一次从下标为0的开始,将下标为0的这个数与后面的n-1个进行比较;找出最小或者最大的放在下标为0的这个位置;第二次从下标为1的开始比较;查询剩下的最大或者最小值;放在下标为1的位置;直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 概念比较简单,我们直接看代码: void 选择排序和冒泡排序有点类似,都是将每次循环中的最值移动到数组的一端,可能会令一些人感到混乱,但其实区别地方还是挺多的。 (1)冒泡排序是比较相邻位置的两个数,而选择排序是将一个数与它后面的所有数进行比较,找最大值或者最小值; (2)冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置; (3)两者不同的比较方式决定了冒泡排序是稳定排序算法,选择排序是不稳定排序算法,举个例子对于数组{ 5,8,5,2,9 } ,对于选择排序,第一遍选择第一个元素5会和2交换,那么原序列中2个5的相对位置前后顺序就破坏了)。 将两种排序算法的动态图放在一起看,会比较容易理解。 选择排序: 冒泡排序: