算法描述:比如在一個長度為N的無序數(shù)組中策菜,在第一趟遍歷N個數(shù)據(jù),找出其中最小的數(shù)值與第一個元素交換称开,第二趟遍歷剩下的N-1個數(shù)據(jù)糟把,找出其中最小的數(shù)值與第二個元素交換......第N-1趟遍歷剩下的2個數(shù)據(jù)绢涡,找出其中最小的數(shù)值與第N-1個元素交換,至此選擇排序完成遣疯。
算法分析:
平均時間復(fù)雜度:O( N2 )
空間復(fù)雜度:O(1) (用于交換和記錄索引)
穩(wěn)定性:不穩(wěn)定
算法實(shí)現(xiàn):
void Select_Sort(int *array,int length)
{
assert(array && (length>0))
int i = 0;
int j,tmp;
int minPos;
for (; i < length-1; ++i)
{
minPos = i;
for (j = i+1; j < length; ++j)
{
if(*(array+j) < *(array+minPos))
minPos = j;
}
tmp = *(array+minPos);
*(array+minPos) = *(array+i);
*(array+i) = tmp;
}
return ;
}