各种排序算法思路不清楚的请看 链接
稳定性:稳定性指在排序完成以后,相同元素之间的相对位置不变;意思就是一个数组[2,2,2,1];在完成排序以后,第一次出现的2在排好序的数组中仍旧在其他2的位置前边
稳定性排序算法
冒泡排序
- 思路
a) 在0~N-1的范围内,依次比较12位置,23位置,…,N-2 N-1位置,小数前移
b) 在0~N-2的范围内,依次比较12位置,23位置,…,N-3 N-2位置,小数前移
每一次都把最大值移到数组末尾,如果遇到相同的元素,就不交换位置
插入排序
关键在于相等时候怎么处理
归并问题
关键在于merge的时候怎么操作
不稳定排序算法
选择排序
选择排序首先选择i~N-1范围内的最小值所在的索引j,然后交换索引i与j的元素;然后i依次加1;
比如Arr=[2,2,2,1,2,2,2];
第一步就需要索引位置0与索引位置3交换,这么交换以后原来在第一个位置的2就到了第四个位置,就与就与其他位置的2之间的相对顺序发生了变化
快速排序
因为在patition过程的时候,无法稳定;
比如数组Arr=[5,5,5,5,3,6]
a) 首先选定元素5为pvoit,一直到元素3才出现小于5的元素,所以与小于区的下一个元素做交换,这样原来第一次出现的5就与其他位置的5的相对位置发生了变化;