结构推理
写一个递归方式的选择排序算法。
非递归选择排序算法如下:
void selectionSort(int list[],int last){
int current;
int smallest;
int holdData;
int walker;
for(current=0;current<last;current++){
smallest=current;
for(walker=current+1;walker<=last;walker++)
if(list[walker]<list[smallest])smallest=walker;
holdData=list[current];
list[current]=list[smallest];
list[smallest]=holdData;
}
return;
}
【正确答案】(1)递归方式的选择排序算法
void selectionSort_recursive(int list[],int first,int last){
int smallest;
int holdData;
int walker;
if(first>=last)return;
smallest=first;
for(walker=first;walker<=last;walker++)
if(list[walker]<list[smallest])smallest=walker;
holdData=list[first];
list[first]=list[smallest];
list[smallest]=holdData;
selectionSort recursive(list,first+1,last);
}
(2)代价分析
与选择排序算法相同,该算法的时间复杂度为O(n2)。
【答案解析】