选择排序思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。该序列用数组表示。
#include<iostream>
using namespace std;
#define SIZE 8
void Select_sort(int arr[], int size)
{
for (int i = 0; i < size; ++i)
{
int a = i;
for (int j = i; j < size; ++j)
{
if (arr[a] > arr[j]) a = j;
}//找到序列数中最小数的下标
int temp;
temp = arr[i];
arr[i] = arr[a];
arr[a] = temp;//将最小数前移互换
}
}
int main()
{
int num[SIZE] = { 99,45,78,69,32,15,46,88 };
Select_sort(num, SIZE);
for (int i = 0; i < SIZE; ++i)
cout << num[i] << ' ';
cout << endl;
return 0;
}
时间复杂度:
最好情况交换0次
最坏情况交换n次,时间复杂度为O(n)
交换次数少于冒泡排序,在数量级较少的排序上效率更高一些