我在纸上写select_sort时,突然觉得它和bubble_sort有点像,但是立刻发现它俩并不像,而且区别还挺明显,特意记录。
bubble_sort:
元素优先
3 2 1 6 2
2 3 1 6 2
2 1 3 6 2
1 2 3 2 6
1 2 2 3 6
冒泡排序 按元素大小:从第一个元素开始,将第一个元素与后面元素都比较一遍,把元素按大小放到自己合适的位置(像泡泡那样挤过去,由上面的案例可以看到那种一个个比较/交换的过程)。
void bubble_sort(int a[],int n){
for(int i = 1;i < n; i++)
for(int j = 0;j < n-1; j++)
{
if(a[j] > a[j+1]) swap(a[j],a[j+1]);
} }
select_sort:
位置优先
5 4 3 1 2
1 5 4 3 2
1 2 5 4 3
1 2 3 5 4
1 2 3 4 5
选择排序 按位置顺序:第一个位置,遍历比较一遍,选出最小的放在第一个位置;第二个位置,往后遍历一遍,再次选出最小的数放在第二个位置。 所以说,它以位置优先。
void select_sort(int a[],int n){
for(int i = 0;i < n; i++)
for(int j = i;j < n; j++){
if(a[i] > a[j]) swap(a[i],a[j]);
}
}