数组的排序算法

本文介绍了两种基本的排序算法——选择法排序和冒泡排序,并提供了完整的C语言实现代码。通过实例演示了如何实现从小到大的排序过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:选择法排序
参考程序

#include<stdio.h>

int main(void){

    int a[10];

    puts("请输入10个实数:");

    for(int i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }

    puts("您输入的是个数为:");
    for(int j=0;j<10;j++)
    {
        printf("%d\t",a[j]);
    }



    int item,ipos;
    /*从小到大排序算法*/
    for(int m=0;m<9;m++)
    {
        item=a[m];
        ipos=m;

        for(int n=m+1;n<10;n++)     //从后面的元素中选出最小值,记录数值和位置 
        {
            if(a[n]<item)
            {
                item=a[n];   //交换
                ipos=n;
            }           
        }
        a[ipos]=a[m];   //与第m个元素交换数值 
        a[m]=item;
    }

    puts("\n从小到大排序后,输出为:");
    for(int k=0;k<10;k++)
    {
        printf("%d\t",a[k]);
    }
} 

第一次看书默写排序算法时候,把从后面的元素中找到的最小的元素与将要交换元素呼唤时(也就是参考代码中的交换代码),这两行代码写在了排序算法的第二个for语句中,导致出现错误结果;现在想通了,先要从后面的元素中找到最小的,然后再交换,而不是急着交换!

冒泡排序:
参考程序

#include<stdio.h>

int main(void){

    int a[10];

    puts("请输入10个实数:");

    for(int i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }

    puts("您输入的是个数为:");
    for(int j=0;j<10;j++)
    {
        printf("%d\t",a[j]);
    }

    int item;
    /*冒泡排序算法*/
    for(int m=1;m<10;m++)
    {
        for(int n=9;n>=m;n--)
        {
            if(a[n]<a[n-1])
            {
                item=a[n-1];
                a[n-1]=a[n];
                a[n]=item;
            }
        }
    }   
    //输出数组 
    puts("\n从小到大排序后,输出为:");
    for(int k=0;k<10;k++)
    {
        printf("%d\t",a[k]);
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值