排序算法之选择排序
template <class T>
void SelectSort(T *arr, int len)
{
int min = -1;
for(int i = 0; i < len; i++){
min = i;
for(int j = i + 1; j < len; j++){ //内层循环目的是找出数组未排序的最小值
if(arr[min] > arr[j]) //判断是否需要进行交换
min = j; //需要,将当前下标设置为最小值的下标
}
if(min != i){ //如果最小值的下标和未排序数组的首个下标不等,则交换
/*arr[min] = arr[min] ^ arr[i]; //使用异或的方法进行交换
arr[i] = arr[i] ^ arr[min];
arr[min] = arr[min] ^ arr[i];*/
T tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
}
int main()
{
int arr[5] = {2, 1, 5, 3, 4};
SleectSort(arr, sizeof(arr)/sizoef(int));
for(int i = 0; i < 5; i++)
cout << arr[i] << "\t";
cout << endl;
//double drr[5] = { 3.6, 2.8, 9.5, 7.2, 1.8 };
//SleectSort(drr, sizeof(drr)/sizoef(double));
//for(int i = 0; i < 5; i++)
// cout << drr[i] << "\t";
//cout << endl;
return 0;
}