c语言排序算法_排序算法代码(C语言实现)

冒泡排序

基本思想:

每次比较相邻元素,如果他们的顺序错误就把他们交换过来;

#include

c34f48d3b5cda27236781ed0133ce444.png
冒泡排序运行结果

快速排序

基本思想:

从数列中挑出一个元素,称为基准,重新排列数组,所有比基准值小的元素摆放在基准值前面,所有比基准值大的放在基准值后面(相同的数可以放到任意一边)。

#include<stdio.h>
#define N 10

int p[101];

void quick_sort(int left,int right);

int main()
{
    int i,j;
    printf("please enter ten numbers:n");
    
    for(i=1;i<=N;i++)
    {
        scanf("%d",&p[i]);
    }
    
    quick_sort(1,N);
    
    printf("The correct order isn");
    
    for(i=1;i<=N;i++)
    {
        printf("%d ",p[i]);
    }
    
    return 0;
}

void quick_sort(int left,int right)
{
    int i,j,t,temp;
    
    if(left>right)
    return;
    
    temp=p[left];
    i=left;
    j=right;
    
    while(i!=j)
    {
        while(i<j && p[j]>=temp)
        j--;
        while(i<j && p[i]<=temp)
        i++;
        
        if(i<j)
        {
            t=p[i];
            p[i]=p[j];
            p[j]=t;
        }
    }
    
    p[left]=p[i];
    p[i]=temp;
    
    quick_sort(left,i-1);
    quick_sort(j+1,right);

}

c5950c404ca74db4ad2ba10fa671db4f.png
快速排序运行结果

选择排序

基本思想:

每一次从待排序的数据元素选出最大(或最小)的一个元素,存放到序列的起始位置,直到全部待排序的数据元素排完。

#include<stdio.h>
#define N 10

int main()
{
    int p[N];
    int i,j,t;
    
    printf("please enter ten numbers:n");
    
    for(i=0;i<N;i++)
    {
        scanf("%d",&p[i]);
    }
    for(i=0;i<N;i++)
    {
        for(j=i+1;j<N;j++)
        {
            if(p[i]>p[j])
            {
                t=p[i];
                p[i]=p[j];
                p[j]=t;
            }
        }
    }
    printf("The correct order is:n");
    for(i=0;i<N;i++)
    {
        printf("%d ",p[i]);
    }
    
    return 0;
}

313a4aec4eb706b6e7a4204f519664eb.png
选择排序运行结果

桶排序

基本思想:

将数组的元素分布到多个桶中,然后每个桶单独排序。

#include<stdio.h>
#define N 10
int main()
{
    int p[21];
    int i,t,j;
    
    for(i=0;i<21;i++)
    {
        p[i]=0;
    }
    
    printf("please enter ten numbers:n");
    
    for(i=0;i<N;i++)
    {
        scanf("%d",&t);
        p[t]++;
    }
    
    printf("The correct order is:n");
     
    for(i=0;i<21;i++)
    {
        for(j=1;j<=p[i];j++)
        {
            printf("%d ",i);
        }
    }
    
    return 0;
}

927cd8ae83ba4fce8962aaf92891aa7c.png
桶排序运行结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值