Introduction to Algorithms exerciese 2.2_2
Consider sorting n numbers stored in array A by first finding the smallest element of A and
exchanging it with the element in A[1]. Then find the second smallest element of A, and
exchange it with A[2]. Continue in this manner for the first n - 1 elements of A. Write
pseudocode for this algorithm, which is known as selection sort. What loop invariant does
this algorithm maintain? Why does it need to run for only the first n - 1 elements, rather than
for all n elements? Give the best-case and worst-case running times of selection sort in Θ-
notation.
#include <iostream>
#define Max 100
using std::cin;
using std::cout;
using std::endl;
int main()
{
int A[Max];
int num = 0;
cout << "input serveral intergers:" << endl;
for(int i=0; cin >> A[i]; ++i)
++num;
for(int j=0; j != num; ++j) // c1 num
{ // num-1
int min = A[j]; // c2 num-1
for(int i=j+1; i != num; ++i) // c3 num-j-1
if(A[i] < min) // c4 num-j-1
{
min = A[i]; //c5 num-j-1
A[i] = A[j]; // c5 num-j-1
A[j] = min; // c5 num-j-1
}
}
cout << "the sorted sequence is:" << endl;
for(i=0; i != num; ++i)
cout << A[i] << " " ;
cout << endl;
return 0;


}worst case: n*(n-1)/2+n


418

被折叠的 条评论
为什么被折叠?



