选择排序
1、选择排序:直接选择排序就是选择排序的一种,还是一种堆排序
2、关键字字:选择。就是“挑”的意思:
从一个序列中,找出最大的元素(挑),放在第一个单元格中,重复这个方法,直到只剩下一个元素为止。
3、从大到小排序,假设第一位置为最大的单元格,带颜色的表示要进行比较的两个单元格
原始数据:
0 | 4 | 6 | 2 | 8 | 5 | 1 | 9 | 7 | 3 |
第1轮排序(从这10个变量中选出最大的共需比较9次)
第1次交换,4比0大交换
4 | 0 | 6 | 2 | 8 | 5 | 1 | 9 | 7 | 3 |
第2次交换,6比4大交换
6 | 0 | 4 | 2 | 8 | 5 | 1 | 9 | 7 | 3 |
第3次交换,6比 2大不交换
6 | 0 | 4 | 2 | 8 | 5 | 1 | 9 | 7 | 3 |
第4次交换,8比6大交换
8 | 0 | 4 | 2 | 6 | 5 | 1 | 9 | 7 | 3 |
第5次交换,5没有8大不交换
8 | 0 | 4 | 2 | 6 | 5 | 1 | 9 | 7 | 3 |
第6次排序,1没有8大不交换
8 | 0 | 4 | 2 | 6 | 5 | 1 | 9 | 7 | 3 |
第7次排序,9比8大交换
9 | 0 | 4 | 2 | 6 | 5 | 1 | 8 | 7 | 3 |
第8次排序,7没有9大不交换
9 | 0 | 4 | 2 | 6 | 5 | 1 | 8 | 7 | 3 |
第9次排序,3没有9大不交换
9 | 0 | 4 | 2 | 6 | 5 | 1 | 8 | 7 | 3 |
第2轮排序(从剩下的9个变量中选出最大的共需比较8次)
第1次交换,4比0大交换
4 | 0 | 2 | 6 | 5 | 1 | 8 | 7 | 3 |
第2次交换,2没有4大不交换
4 | 0 | 2 | 6 | 5 | 1 | 8 | 7 | 3 |
第3次交换,6比4大交换
6 | 0 | 2 | 4 | 5 | 1 | 8 | 7 | 3 |
第4次交换,5没有6大不交换
6 | 0 | 2 | 4 | 5 | 1 | 8 | 7 | 3 |
第5次交换,1没有6大不交换
6 | 0 | 2 | 4 | 5 | 1 | 8 | 7 | 3 |
第6次交换,8比6大交换
8 | 0 | 2 | 4 | 5 | 1 | 6 | 7 | 3 |
第7次交换,7没有8大不交换
8 | 0 | 2 | 4 | 5 | 1 | 6 | 7 | 3 |
第8次交换,3没有8大不交换
8 | 0 | 2 | 4 | 5 | 1 | 6 | 7 | 3 |
第3轮排序(从剩下的8个变量中选出最大的共需比较7次)
第1次交换,2比0大交换
2 | 0 | 4 | 5 | 1 | 6 | 7 | 3 |
第2次交换,4比2大交换
4 | 0 | 2 | 5 | 1 | 6 | 7 | 3 |
第3次交换,5比4大交换
5 | 0 | 2 | 4 | 1 | 6 | 7 | 3 |
第4次交换,1没有4大不交换
5 | 0 | 2 | 4 | 1 | 6 | 7 | 3 |
第5次交换,6比5大交换
6 | 0 | 2 | 4 | 1 | 5 | 7 | 3 |
第6次交换,6没有7大不交换
7 | 0 | 2 | 4 | 1 | 5 | 6 | 3 |
第7次交换,3没有7大不交换
7 | 0 | 2 | 4 | 1 | 5 | 6 | 3 |
第4轮排序(从剩下的7个变量中选出最大的共需比较6次)
第1次交换,2比0大交换
2 | 0 | 4 | 1 | 5 | 6 | 3 |
第2次交换,4比2大交换
4 | 0 | 2 | 1 | 5 | 6 | 3 |
第3次交换,1没有4大不交换
4 | 0 | 2 | 1 | 5 | 6 | 3 |
第4次交换,5比4大交换
5 | 0 | 2 | 1 | 4 | 6 | 3 |
第5次交换,6比5大交换
6 | 0 | 2 | 1 | 4 | 5 | 3 |
第6次交换,3没有6大不交换
6 | 0 | 2 | 1 | 4 | 5 | 3 |
第5轮排序(从剩下的6个变量中选出最大的共需比较5次)
第1次交换,2比0大交换
2 | 0 | 1 | 4 | 5 | 3 |
第2次交换,1没有 2大不交换
2 | 0 | 1 | 4 | 5 | 3 |
第3次交换,4比2大交换
4 | 0 | 1 | 2 | 5 | 3 |
第4次交换,5比4大交换
5 | 0 | 1 | 2 | 4 | 3 |
第5次交换,3没有 5大不交换
5 | 0 | 1 | 2 | 4 | 3 |
第6轮排序(从剩下的5个变量中选出最大的共需比较4次)
第1次交换,1比0大交换
1 | 0 | 2 | 4 | 3 |
第2次交换,1比2大交换
2 | 0 | 1 | 4 | 3 |
第3次交换,4比2大交换
4 | 0 | 1 | 2 | 3 |
第4次交换,3比4大交换
4 | 0 | 1 | 2 | 3 |
第7轮排序(从剩下的4个变量中选出最大的共需比较3次)
第1次交换,1比0大交换
1 | 0 | 2 | 3 |
第2次交换,2比1大交换
2 | 0 | 1 | 3 |
第3次交换,3比2大交换
3 | 0 | 1 | 2 |
第8轮排序(从剩下的3个变量中选出最大的共需比较2次)
第1次交换,1比0大交换
1 | 0 | 2 |
第2次交换,2比1大交换
2 | 0 | 1 |
第9轮排序(从剩下的2个变量中选出最大的共需比较1次)
第1次交换,1比0大交换
1 | 0 |
选择排序图
VB代码:
Fori=1 to 9 //外循环i n-1
For j=i+1 to 10 //内循环i+1
If a(i)<a(j) then
t=a(i):a( i)=a(j):a(j)=t
End if
Next
Next
C#代码:
static void(int[]group)
{
int temp;
int pos=0;
for(inti=0;i< group.Length-1;i++)
{
pos=i;
for(intj=i+1;j<group.Length;j++)
{
if(group[j]<group[pos])
{
pos=j;
}
}//第i个数与最小的数group[pos]交换
temp=group[i];
group[i]=group[pos];
group[pos]=temp;
}
}