2.2-1: 渐进为O【O内H的那种,我表示不会打】(n^3)
2.2-2:
C++代码:
void ChooseSort(int *A,int length)
{
int temp = 0;
int temp2;
for(int i = 0;i < length;i++){
for(int j = i;j < length;j++){
if(A[j] < A[temp])
temp = j;
}
temp2 = A[i];
A[i] = A[temp];
A[temp] = temp2;
}
return;
}
循环不变式是将循环找出剩余数组中最小的数,并写到剩余数组的首个位置上
因为最后一个就自动为最大的,且对其本身来言为最小的,所以不用再次重复
时间复杂度为O(n^2).因为(n-1)+(n-2)+...+1 = [1+(n-1)](n-1)/2 = (n^2 - n)