选择排序算法的基本思想:每一轮找到最小(升序)的元素放在当前序列的最前面。
特点:先找到最小元素,记录下标,最后交换。
时间复杂度:O(n^2)。以下为实现代码:
#include <iostream>
using namespace std;
void sort(int *arr,int length) //传入数组首地址和数组长度
{
int index; //定义最小值的下标
int temp;
for (int i = 0; i < length - 1; i++) //一共需要循环 n-1 轮
{
index = i;
for (int j = i + 1; j < length; j++) //从第 i+1 个元素开始到最后一个元素结束
{
if (arr[j] < arr[index]) //找到最小元素并记录下标
index = j;
}
if (arr[index] < arr[i]) //若找到比较小的元素就交换
{
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
int main()
{
int arra[] = {12,12,54,1745,45,45,469,789,789};
int length = sizeof(arra) / sizeof(arra[0]); //计算数组长度
sort(arra,length);
for (size_t i = 0; i < length; i++)
cout << arra[i] << " ";
system("pause");
return 0;
}