【10】选择排序

1、选择排序原理

利用for循环,将n-1个元素与第一个元素相比,进行大小调换,然后n-2个元素与第二个元素相比,进行大小调换……直到最后1个元素与倒数第二个元素相比

2、普通的选择排序算法

(1)根据输入的字符串首字母大小进行排序(按照ASCII的排序)

#define NUM 1001
int main()
{
    char Value[NUM] = { 0 };//字符数组存储字符
    scanf("%s", Value);//输入数据

    int SIZE = strlen(Value);//计算数组大小
    int i = 0, j = 0;//循环数
    int number = 0;//中间值

    for (i = 0; i < SIZE - 1; i++)
    {
        for (j = i + 1; j < SIZE; j++)
        {
            if (Value[i] > Value[j])
            {
                number = Value[i];
                Value[i] = Value[j];
                Value[j] = number;
            }
        }
    }

    printf("%s\n", Value);
    return 0;
}

(2)对十个整数选择排序

int main()
{
    int Value[NUM] = { 0 };
    int x = 0;
    int SIZE = sizeof(Value) / sizeof(Value[0]);//计算数组大小
    int i = 0, j = 0;// 循环数
    int number = 0;//中间值
    for (x = 0; x < NUM; x++)
    {
        scanf("%d", &Value[x]);//输入数据
    }
    for (i = 0; i < SIZE - 1; i++)
    {
        for (j = i + 1; j < SIZE; j++)
        {
            if (Value[i] > Value[j])
            {
                number = Value[i];
                Value[i] = Value[j];
                Value[j] = number;
            }
        }
    }
    for (x = 0; x < NUM; x++)
    {
        printf("%d ", Value[x]);
    }
    return 0;
}

3、官方库里的选择排序算法

(1)qsort函数的头文件为<stdlib.h>,是一个库函数。

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
  • base – 指向要排序的数组的第一个元素的指针。
  • nitems – 由 base 指向的数组中元素的个数。
  • size – 数组中每个元素的大小,以字节为单位。
  • compar – 用来比较两个元素的函数。

(2)对int数组选择排序

#include <stdio.h>
#include <stdlib.h>

int values[] = { 88, 56, 100, 2, 25 };

int cmpfunc (const void * a, const void * b)
{
    return ( *(int*)a - *(int*)b );
}

int main()
{
    int n;

    printf("排序之前的列表:\n");
    for( n = 0 ; n < 5; n++ )
    {
        printf("%d ", values[n]);
    }

    qsort(values, 5, sizeof(int), cmpfunc);

    printf("\n排序之后的列表:\n");
    for( n = 0 ; n < 5; n++ )
    {
        printf("%d ", values[n]);
    }
    return 0;
}

除此以外还有:可以点击这里查看

(3)对char数组选择排序

(4)对double数组选择排序

(5)对字符串进行选择排序

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limou3434

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值