那些排序算法(龟速慢更)

垃圾萌新写的博客,有误有蒙请指出!!!

1-选择排序Selectionsort

时间复杂度:O(n^2)(平均)/O(n^2)(最优)/O(n^2)(最差)
空间复杂度:O(1)
稳定性:不稳定

选择排序,很简单,就是每次选出最小的拿出来存在序列里。
然后最小的拿走之后,剩下来的就是第二小的,把它放在最小的后面。
然后是第三小的,放在第二小的后面
然后是第四小……第五小……
一直到最大,排序就结束了
图片演示(来源网络)
黄色-归位,绿色-访问,红色-最小值
代码如下:

#include<bits/stdc++.h>
using namespace std;

int len,a[100]={99999999}; 
void Selectionsort(int a[])
{
    int Min;
    for(int i=1;i<=len;i++)//个人习惯从1开始计数 
    {
        Min=0;//将a[Min]存为较大值(这里我a[0]设置为99999999) 
        for(int j=i;j<=len;j++)
        {
            if(a[j]<a[Min])
                Min=j;
        }//寻找剩余数列中的最小值下标 
        swap(a[i],a[Min]); //交换两者的位置,将选出的最小数置于正确的位置 
    }
}
int main()
{
    cin>>len;
    for(int i=1;i<=len;i++)
    {
        cin>>a[i];
    }//输入 
    Selectionsort(a);
    for(int i=1;i<=len;i++)
    {
        cout<<a[i]<<" ";
    }//输出 
} 

2-插入排序Insertion Sort

(先放图和代码,有空再更~)
图片演示(来源网络)
黄色-归位 绿色-访问 红色-关键字

代码如下:

#include<bits/stdc++.h>
using namespace std;

int len,a[100];
void InsertionSort(a[])
{
    for(int i=1;i<=len;i++){//对每一个数依次进行操作 
        while(a[i-1]>a[i])
            swap(a[i-1],a[i]);//不断与上一个数交换直到处于正确的位置 
    }
}
int main()
{
    cin>>len;
    for(int i=1;i<=len;i++)
        cin>>a[i];//输入 
    InsertionSort(a);
    for(int i=1;i<=len;i++)
        cout<<a[i]<<" ";//输出 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值