排序算法

1插入排序

描述:

1.将数组a从左到右插入数值。

2.将数组下标为k∈(1,size-1)的数值作为最左侧待排序的元素。

3.遍历数组下标为j∈(0-k-1)的元素,若存在大于a[k]的值,则将a[k]的值赋值给a[j],并将下标为j到k-1的元素全部后移一位。

void InsertSort(int a[],int size)
{
    for (int i = 1; i < size; i++)
    {
        //a[i]是最左侧的无序元素,每次循环将a[i]放到合适的位置上
        for (int j = 0; j < i; j++)
        {
            if (a[j] > a[i])
            {
                //把a[i]放到a[j],下表j到i-1向后移动一位
                int temp = a[i];
                for (int k = j; k < i; k++)
                {
                    a[k - 1] = a[k];
                }
                a[j] = temp;
                break;                        //别忘了break
            }
        }
    }
}

2.选择排序

描述:

1.冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值;
2.冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;
3.冒泡排序是通过数去找位置,选择排序是给定位置去找数;

#include "iostream"
#include "SelectSort.h"
using namespace std;

void SelectSort(int a[],int size)
{
    
    for (int i = 0; i < size; i++)
    {
        int min_index = i;                //假定当前值为最小值
        for(int j=i;j<size;j++)
        {
            if (a[j] <a[ min_index])    //未排序的数据中如果有比当前最小值大的,则记录数组下标j
            {
                min_index = j;
            }
        }
        if (min_index != i)
        {
            int t = a[min_index];
            a[min_index]=a[i];
            a[i] = t;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值