选择排序的时间复杂度为o(n*n),空间复杂度为o(n)。
逻辑分析:
1 假设数组中的最小数为a[0],然后比较数组中其他数与a[0]的大小,若a[i]<a[0],则交换两者为止,如此循环下来,最小的数字就存在a[0]里面啦。
2 然后继续将a[1]中存访后面元素最小的,一直到排序完成。
是不是很简单,对,就这么简单。
#include<iostream>
#include<cstdlib>
using namespace std;
void swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
void selectSort(int a[], int length)
{
for (int j = 0; j < length; j++)
{
for (int i = j+1; i < length; i++)
{
if (a[i] <a[j])
{
swap(a[i], a[j]);
}
}
}
}
int main()
{
int a[] = { 2,1,4,5,3,8,7,9,0,6 };
selectSort(a, 10);
for (int i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
cout << endl;
system("pause");
return 0;
}