选择排序
选择排序:有选择的排序。即给每个位置选择当前元素最小的(或最大的),实现排序。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int t,k;
int a[10]={0,1,2,3,4,5,6,7,8,9};
for(int i=0;i<9;i++){//选择排序//
k=i;//k记录i的值//
for(int j=i+1;j<10;j++)
if(a[j]>a[k])
k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
运行原理:先比较前一个元素和后一个元素的大小,如果前一个比后一个元素的值大,用临时变量K标记他的位置,然后是第二次比较......循环结束后,K值记录了数组中最大的元素下标。然后就是判断,如果这个元素下标不是第一个元素的下标,就交换两者的值。现在数组中找到了最大值,然后再找第二大的值。。。
时间复杂度O(n^2).