今天给大家介绍一个排序算法——选择排序
选择排序的基本思想是:每一趟从待排序记录中选出关键字最小的记录,按顺序放到已排好序的子序列中,直到全部记录排序完毕。选择排序有两种:直接选择排序和堆排序。只给大家讲解选择排序。
直接选择排序的基本思想是:假设待排序序列有n个记录(R1,R2,……,Rn),先从n个记录中选出关键字最小的记录Rk,将该记录与第一个记录交换位置,完成第一趟排序;然后从剩下的n-1个记录中再找出一个关键字最小的记录与第二个记录交换位置,依次反复,对n个记录经过n-1躺排序即可得到有序序列。
r是待排序的数列,n是n个长度,i是我们已排好序的我们要选择的那个下标。
我们首先把i给过k。
我们可以看到这个循坏j是从i的下一个开始不管你排序到什么位置,j都是没排好序的。
J从下一个位置开始然后一直到最后一个元素,如果后面这个元素比r[k]要小,这时就说明不再指向最小的。K总是要等于当前最小数的下标。如果r[k]一旦比r[j]要大,马上修改k,修改k为小的数的下标。所以保证了k都是当前最小关键字的记录位置。如果k和i不相等,我们就进行一个交换,这个时候就能找到他们
意思是直接选择到相应的排序位置,这就是直接选择排序。
一共要进行n-1趟。
直接排序排序数不能太多的,否则就比较复杂