# select-sort

746人阅读 评论(0)

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

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：256124次
• 积分：3491
• 等级：
• 排名：第9886名
• 原创：82篇
• 转载：49篇
• 译文：2篇
• 评论：47条
最新评论
perl
unix/linux
牛牛们的blog
通信网络论坛
信息安全