排序的几个基本算法

本文详细介绍了三种基本排序算法——顺序排序、冒泡排序和选择排序的实现原理及具体代码实现。通过直观的描述帮助读者理解每种算法的工作方式及其背后的逻辑。

 

 

1、顺序排序:数组内部做排序

第一个和第二个做比对,第一个和第三个多比对,第一个和第四个做比对,以此类推。

 

//顺序排序
void sort_xunxu(int * a,int n)
{// a 数组地址,n: 数组的长度
    int i, j;
    int tmp = NULL;

    for (i = 0; i < n - 1; i++)
    {
        for (j = i + 1; j < n;j++)
        {// 升序
            if (a[i]>a[j])
            {
                tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
            }
        }
    }
}


2、冒泡排序

顾名思义,就和冒泡泡一样,两个两个对比,谁比较大谁上去。

第一个和第二个比较,第二个和第三个比较,以此类推。

// 冒泡排序
void sort_maopao(int *a,int n)
{

    int i = 0, j = 0;
    int tmp = 0;

    for (i = 0; i < n - 1;i++)
    {
        for (j = 0; j < n - 1 - i;j++)
        {  // 升序
            // 两两对比
            if (a[j]>a[j+1])
            {
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}

 

 

3、选择排序

就是记录最大值(或者最小值),互换位置。

// 选择排序
void sort_xuanze(int *a,int n)
{
    int i, j;
    int min;
    int tmp;

    for (i = 0; i < n - 1;i++)
    {  // 选择最小值
        min = i;
        for (j = i + 1; j < n;j++)
        {   // 判定谁打,选择小的位置
            if ( a[min]>a[j])
            {// 选择最小值的位置
                min = j;
            }
            // 当最小值的位置如果不是自己的话,就换
            if (min != i)
            {
                tmp = a[min];
                a[min] = a[i];
                a[i] = tmp;
            }
        }
    }
}

转载于:https://www.cnblogs.com/qxj511/p/5223077.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值