c語言三值排序,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(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  %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=ab?a:b;

min=ab?a:b;

if(cmax) max=c;

if(minc) min=c;

printf(“從大到小排序:%d %d %d\n”,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(“%d\t”,a[i]);

}return 0;

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303556.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:50
下一篇 2024-12-31 11:50

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟件。在VB中,有許多不同的方法可以運行程序,包括編譯器、發佈程序以及命令行。在本文中…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python程序的三種基本控制結構

    控制結構是編程語言中非常重要的一部分,它們指導着程序如何在不同的情況下執行相應的指令。Python作為一種高級編程語言,也擁有三種基本的控制結構:順序結構、選擇結構和循環結構。 一…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論