选择排序与冒泡排序的区别
选择排序和冒泡排序的区别
一、选择排序
例如以下的数组为 5 6 8 2 4 1 9 3 7
对应的数组下标为 0 1 2 3 4 5 6 7 8
选择排序是
(1)第一次遍历
先令minPos=0,
arr[0]=5 < a[1]=6 ;可推出minPos=0
arr[0]=5 < a[2]=8 ;可推出minPos=0
arr[0]=5 > a[3]=2 ;可推出minPos=3
arr[3]=2 < a[4]=4 ;可推出minPos=3
…
…
…
可推出minPos=5
此时arr[0] 和 arr[minPos]即arr[5] 互换位置
此时数组为 1 6 8 2 4 5 9 3 7
(2)第二次遍历
令minPos=1,
arr[1]=6 < arr[2]=8 ;可推出minPos=1
arr[1]=6 > arr[3]=2 ;可推出minPos=3
arr[3]=2 < arr[4]=4 ;可推出minPos=3
…
…
…
可推出minPos=3
此时arr[1] 和 arr[minPos]即arr[3] 互换位置
此时数组为 1 2 8 64 5 9 3 7
(3)第三次遍历
…
…
…
二、冒泡排序
例如以下的数组为 5 6 8 2 4 1 9 3 7
对应的数组下标为 0 1 2 3 4 5 6 7 8
(1)第一次遍历
arr[0]=5 < arr[1]=6 , 数组为 5 6 8 2 4 1 9 3 7
arr[1]=6 < arr[2]=8 , 数组为 5 6 8 2 4 1 9 3 7
arr[2]=8 > arr[3]=2 ,数组为 5 6 2 8 4 1 9 3 7
即将arr[2]与arr[3]相交换
arr[3]=8 >arr[4]=4 ,数组为 5 6 2 4 8 1 9 3 7
即将arr[3]与arr[4]相交换
arr[4]=8 >arr[5]=1 ,数组为 5 6 2 4 1 8 9 3 7
即将arr[4]与arr[5]相交换
arr[5]=8 <arr[6]=9 ,数组为 5 6 2 4 1 8 9 3 7
arr[6]=9 >arr[7]=3 ,数组为 5 6 2 4 1 8 3 9 7
即将arr[6]与arr[7]相交换
arr[7]=9 >arr[8]=7 ,数组为 5 6 2 4 1 8 3 7 9
即将arr[7]与arr[8]相交换
此时第一次遍历结束
(2)第二次遍历
…
…
…