算法介绍
冒泡排序就不需要多说了,大一就会的东西,所以这里就不多言了。记录一下y总对他的分析就是了
简单选择排序
每次循环遍历后面的元素,然后将最小的放到最前面:举个例子
第一次 如上图 第一次发现最小的元素是2就将位于第一个位置的元素和2互换
第二次 如上图 第二次发现第二小的数是3就将位于第二个位置上的元素和3互换
。。。。。。
以此类推
算法题目
#include <iostream>
using namespace std;
const int N = 1000010;
int q[N];
void select_sort(int n){
for(int i=0;i<n-1;i++){
int maxidex = i;
for(int j=i+1;j<n;j++){
if(q[j]<q[maxidex]){
maxidex = j;
}
}
swap(q[i],q[maxidex]);
}
return;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)scanf("%d",&q[i]);
select_sort(n);
for(int i=0;i<n;i++)printf("%d ",q[i]);
return 0;
}
算法复杂度分析
时间复杂度:
最优的:本来就有序的,所以就是O(N)
平均的:O(N^2)
最差的:O(N^2)
空间复杂度:O(1)
稳定性: