c语言三值排序,C语言三种排序

发布时间:2022-11-22

本文目录一览:

1、用C语言比较三个数的大小,并按照从大到小排序
2、如何用函数实现三个数的排序(用的是C语言)
3、c语言编写程序,任意三个数,由大小到排序,源代码如何写!
4、c语言三种排序
5、C语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出

用C语言比较三个数的大小,并按照从大到小排序

#include stdio.h
#include math.h
int main(void)
{
    int a,b,c;
    printf("请输入任意三个整数a,b,c:");
    scanf("%d%d%d",a,b,c);
    int s;
    if(a < b)s=a,a=b,b=s; // 比较a,b大小,通过赋值,使得a > b
    if(a < c)s=a,a=c,c=s; // 进一步比较a,c大小,通过赋值得出最小值,并赋给a
    if(b < c)s=b,b=c,c=s; // 最后比较出b,c中的较大值
    printf("从大到小的顺序依次是:%d %d %d",c,b,a);
    return 0;
}

如何用函数实现三个数的排序(用的是C语言)

一:全局变量

#include stdio.h
int a,b,c; // 定义三个全局变量
void sort() // 不需要参数
{
    int t;
    if(a < b)
    {
        t=a;a=b;b=t;
    }
    if(b < c)
    {
        t=b;b=c;c=t;
    }
    if(a < b)
    {
        t=a;a=b;b=t;
    }
}
int main()
{
    printf("输入:");
    scanf("%d%d%d",a,b,c);
    sort();
    printf("排序:%d  %d  %d\n",a,b,c);
    return 0;
}

二:指针

#include stdio.h
void sort(int *a, int *b, int *c) // 参数传递方式:地址传递
{
    int t;
    if(*a < *b)
    {
        t=*a;*a=*b;*b=t;
    }
    if(*b < *c)
    {
        t=*b;*b=*c;*c=t;
    }
    if(*a < *b)
    {
        t=*a;*a=*b;*b=t;
    }
}
int main()
{
    int a,b,c;
    printf("输入:");
    scanf("%d%d%d",a,b,c);
    sort(&a, &b, &c); // 把地址作为参数
    printf("排序:%d  %d  %d\n",a,b,c);
    return 0;
}

c语言编写程序,任意三个数,由大小到排序,源代码如何写!

思路:任意三个数按从大到小顺序输出,可以先求出三个数中的最大值和最小值,三个数的和减去最大值和最小值的差就是中间数,接着依次输出。 参考代码:

#include "stdio.h"
int main()
{
    int a,b,c,max,min;
    scanf("%d%d%d",&a,&b,&c);
    max = (a > b) ? a : b;
    min = (a < b) ? a : b;
    if(c > max) max = c;
    if(min > c) min = c;
    printf("从大到小排序:%d %d %d\n",max,a+b+c-max-min,min);
}

运行结果:

2 1 3
从大到小排序:3 2 1

c语言三种排序

常用的C语言排序算法主要有三种即冒泡法排序、选择法排序、插入法排序。

一、冒泡排序

是从第一个数开始,依次往后比较,在满足判断条件下进行交换。代码实现(以降序排序为例)

#include stdio.h
int main()
{
    int array[10] = { 6,9,7,8,5,3,4,0,1,2 };
    int temp;
    for (int i = 0; i < 10; i++)
    {
        // 循环次数
        for (int j = 0; j < 10 - i - 1; j++)
        {
            if (array[j] < array[j+1])
            {
                // 前面一个数比后面的数大时发生交换
                temp = array[j];
                array[j] = array[j+1];
                array[j + 1] = temp;
            }
        }
    }
    // 打印数组
    for (int i = 0; i < 10; i++)
        printf("%2d", array[i]);
    return 0;
}

二、选择排序(以升序为例)

就是在指定下标的数组元素往后(指定下标的元素往往是从第一个元素开始,然后依次往后),找出除指定下标元素外的值与指定元素进行对比,满足条件就进行交换。与冒泡排序的区别可以理解为冒泡排序是相邻的两个值对比,而选择排序是遍历数组,找出数组元素与指定的数组元素进行对比。

#include stdio.h
int main()
{
    int array[10] = { 6,9,7,8,5,3,4,0,1,2 };
    int temp, index;
    for (int i = 0; i < 9; i++)
    {
        index = i;
        for (int j = i; j < 10; j++)
        {
            if (array[j] < array[index])
                index = j;
        }
        if(i != index)
        {
            temp = array[i];
            array[i] = array[index];
            array[index] = temp;
        }
    }
    for(int i=0; i<10; i++)
        printf("%2d", array[i]);
    return 0;
}

三、快速排序

是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

void QuickSort(int* arr, int size)
{
    int temp, i, j;
    for(i = 1; i < size; i++)
        for(j = i; j > 0; j--)
        {
            if(arr[j] < arr[j-1])
            {
                temp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = temp;
            }
        }
}

C语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出

具体操作方法如下:

#include stdio.h
int main(void)
{
    int a,b,c,t;
    printf("请输入三个数");
    scanf("%d%d%d",a,b,c);
    if(a < b)
    {
        t=a;a=b;b=t;
    }
    if(b < c)
    {
        t=b;b=c;c=t;
    }
    if(a < b)
    {
        t=a;a=b;b=t;
    }
    printf("从大到小:%d %d %d",a,b,c);
    system("pause");
    return 0;
}

注意:中间的 t=a;a=b;b=t,就是交换a和b的位置,总是把大的换到前面来。

扩展资料:

C语言任意输入5个数,并按从大到小顺序输出的方法如下:

#include stdio.h
#include stdlib.h
int main()
{
    int a[5];
    int i,j,k;
    for(i=0; i <= 4; i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0; i <= 4; i++)
    {
        for(j=0; j <= 4; j++)
        {
            if(a[i] < a[j])
            {
                k=a[i]; a[i]=a[j]; a[j]=k;
            }
        }
    }
    printf("排序结果是:\n");
    for(i=0; i <= 4; i++)
    {
        printf("%d\t",a[i]);
    }
    return 0;
}