首页 > 编程知识 正文

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

时间:2023-12-29 13:16:37 阅读:329865 作者:QCYX

本文目录一览:

用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(ab)s=a,a=b,b=s;//比较a,b大小,通过赋值,使得ab 。此语句目的:ab

if(ac)s=a,a=c,c=s;//进一步比较a,c大小,通过赋值得出最小值,并赋给a; 此语句目的:ac

if(bc)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(ab)

    {

        t=a;a=b;b=t;

    }

    if(bc)

    {

        t=b;b=c;c=t;

    }

    if(ab)

    {

        t=a;a=b;b=t;

    }

}

int main()

{

    printf("输入:");

    scanf("%d%d%d",a,b,c);

    sort();

    printf("排序:%d  %d  %dn",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  %dn",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=ab?a:b;

min=ab?a:b;

if(cmax) max=c;

if(minc) min=c;

printf("从大到小排序:%d %d %dn",max,a+b+c-max-min,min);       

}

/*

运行结果:

2 1 3

从大到小排序:3 2 1

*/

c语言三种排序

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

一、冒泡排序冒泡排序:

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

#includestdio.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;}}

二、选择排序以升序排序为例:

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

#includestdio.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;i10: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; j0; j--)

{

if(arr[j] arr[j-1])

{

temp = arr[j];

arr[j]=arr[j-1];

arr[j-1]=temp;

}

}

}

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

具体操作方法如下:

#includestdio.h

int main(void)

{int a,b,c,t;

printf("请输入三个数");

scanf("%d%d%d",a,b,c);

if(ab)

{t=a;a=b;b=t;}

if(bc)

{t=b;b=c;c=t;}

if(ab)

{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("%dt",a[i]);

}return 0;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。