1. 分析
/*5. 选择排序(SelectSort)
#时间复杂度: O(n^2) 空间复杂度:O(1)
#分析:
每次选择最小的数字, 放到位置上, 再在剩下的数中选择处最小的数字
实现方法:2个for循环
*/
2.源码
void SelectSort(int arr[], int nLength)
{
if(arr == NULL ||nLength <=0)
{
printf("SelectSort:invalid input!\n");
return ;
}
int i,j;
int nMinIndex;
for(i=0; i<nLength; i++)
{
nMinIndex = i;
// #找到最小值的下标
for(j = i;j<nLength; j++)
{
if(arr[j] < arr[nMinIndex])
{
nMinIndex = j;
}
}
// #如果当前值不是最小值,交换;
if( nMinIndex != i)
{
arr[i] = arr[i] ^ arr[nMinIndex];
arr[nMinIndex] = arr[i] ^ arr[nMinIndex];
arr[i] = arr[i] ^ arr[nMinIndex];
}
}
}