使用语言:C++
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a[10]={31,41,59,26,41,58,12,6,102,23};//示例数据
int len=sizeof(a)/sizeof(a[0]),min=0,temp=0,index;//获取数组长度的方法
min=a[0];
index=0;//与min对应的数组下标的值
//算法开始 由小到大排序
for(int i=0;i<len;i++)
{
for(int j=i;j<len;j++)
{
if(a[j]<min)
{
index=j;
min=a[j];
}
}
//index若等于i,则说明a[i]是本次比较中最小的元素,不需要交换
if(!(index==i))
{
temp=a[i];
a[i]=a[index];
a[index]=temp;
}
min=a[i+1];
index=i+1; //指向下一个要进行操作的元素
}
//算法结束
//输出结果
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
时间复杂度分析:从双层嵌套for循环中,采用累加法得到执行次数为:n+(n-1)+(n-2)+……+1,这就是个等差数列,和(1+n)*n/2,故而时间复杂度为:O(n*n) 。