选择排序的算法思想是逐个找出第i小的元素,并将这个元素与数组中的第i个位置的元素进行交换,第i小的元素 一次交换到位。选择排序是不稳定的排序算法。整个排序过程中最多需要n - 1次交换,选择排序总的时间代价为o(n * n),算法不依赖于原始数组的输入顺序,因此最大,最小,平均时间代价均为o(n * n)。
#include<iostream>
using namespace std;
void select_sort(int arr[], int n)
{
if(arr == NULL || n <= 0)
return;
for(int i = 0; i < n - 1; ++i)
{
int min = i;//标记最小元素的位置
for(int j = i + 1; j < n; ++j)
{
if(arr[min] > arr[j])//交换最小元素的位置
min = j;
}
swap(arr[min],arr[i]);
}
}
int main(void)
{
int arr[] = {45, 34, 78, 12, 34, 32, 29, 64};
select_sort(arr,8);
for(int i = 0; i < 8; ++i)
{
cout<<arr[i]<<" ";
}
cout<<endl;
system("pause");
return 0;