①思想原理:
扫描所有元素,选择最小的一个放在第一个位置;扫描余下所有的元素,将最小的一个放在第二个位置;依次继续,直至倒数第二个被放置。
②逻辑化及分析:
设所有n个元素在长度为n的数组a[n]中;
第一趟:所有元素即a[0]~a[n-1]中选出最小的与第一个元素即a[0]交换;
第二趟:剩下元素即a[1]~a[n-1]中选出最小的与第二个元素即a[1]交换;
第三趟:剩下元素即a[2]~a[n-1]中选出最小的与第三个元素即a[2]交换;
......
第n-1趟:剩下的元素即a[n-2]~a[n-1]中选出最小的与第n-1个元素即a[n-1]交换;//最后一趟
由上易知需两重循环及另外两个辅助变量i、j,其中i属于[0,n-2],j属于[i+1,n-1]。
③算法设计与描述(伪代码):
SelectionSort(a[n]){ //接收n个元素的数组a,返回空 局部变量 min; for i:[0,n-2]{ for j:[i+1,n-1]{ if(