简单选择排序

简单选择排序:
int a[5] = {12,6,78,3,9};
从大到小排序:
1、假设第一个元素为最大值。
int max = a[0];
int index = 0;//存放的是当前最大值的数组下标
2、从a[1]开始后续的每个元素和max比较,如果a[1] > max,更新max的值:max = a[1];
继续判断a[2] > max, 78 > 12,max = 78,当条件成立时还要更新最大值的下标
判断a[3] > max, 3 > 78,max = 78
判断a[4] > max,9 > 78,max = 78
3、a[index] 和 a[0]交换
到此只能将第一个找到的最大值放到a[0]中。

但是还要找第二个最大值放到a[1],第三个最大值放在a[2]中,第四个最大值放在a[3]
4、假设第二个元素为最大值
int max = a[1];
int index = 1;
5、从a[2]开始每个元素和max比较
6、a[1]和a[index]交换
后续操作都是在重复执行1、2、3的逻辑

#include<stdio.h>

int main(int argc, const char *argv[])
{
    int a[5] = {12,5,78,123,6};

    int max,index,temp;
    int i,j;

    for(i = 0;i < 4;i ++)
    {
        max = a[i];
        index = i;

        for(j = i + 1;j < 5;j ++)
        {
            if(max < a[j])
            {
                max = a[j];
                index = j;
            }
        }

        temp = a[i];
        a[i] = a[index];
        a[index] = temp;
    }

    for(i = 0;i < 5;i ++)
    {
        printf("%d\t",a[i]);
    }
    printf("\n");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值