select-sort

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

• 本文已收录于以下专栏：

举报原因： 您举报文章：select-sort 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)