冒泡法編程c語言,c語言程序設計冒泡法

本文目錄一覽:

c語言中冒泡法是什麼意思?

冒泡法是一種排序方法

冒泡法5 4 3 2 1

比如上面這5個數字我們把它按照由小到大的順序排列,

從前往後相臨兩位比較大小,如果前一位比後一位大就把它倆

換位,5比4大就把5和4換位,得到45321

5又比3大 5和3換位 得到43521 依次類推最後得到

43215 這樣就把最大的一個數字移到最後面了

然後不看5 ,剩下4321 再用上面的方法把4移動到最後

得到 32145 在不看45 剩下321 把3移動到

最後,依此類推。

最終得到12345

這就是冒泡法,是計算機編程排序中最簡單快捷的方法。

除此意外我還能寫出許多排序方法,但是效率上都不如冒泡法

至於為什麼叫冒泡法呢,你把這幾個數字豎起來看

1

2

3

4

5

把最大的數字5看成最大的泡泡,浮到最上,然後4又浮上去,依此類推

得到

5

4

3

2

1

所以形象的稱為冒泡法

——————————————————————————————————

以下是C語言中十個數的冒泡法排序的代碼

#includestdio.h

#includeconio.h

int main(void)

{

long arrary[9],

box=0L;

int i1=0,

i2=0;

for(i1=0;i19;i1++)

arrary[i1]=0;

printf(“輸入數組元素:\n”);

for(i1=0;i1=9;i1++)

{

printf(“%3d”,i1+1);

scanf(“%d”,arrary[i1]);

}

for(i1=0;i1=9;i1++)

for(i2=0;i2=9-i1;i2++)

{

if(arrary[i2]arrary[i2+1])

{

box=arrary[i2+1];

arrary[i2+1]=arrary[i2];

arrary[i2]=box;

}

}

printf(“\n排序後為:\n”);

for(i1=0;i1=9;i1++)

printf(“%3d%d\n”,i1+1,arrary[i1]);

getch();

return 0;

}

C語言冒泡排序法

冒泡排序每一趟排序把最大的放在最右邊。

比如:

87 12 56 45 78

87和12交換:12 87 56 45 78

87和56交換:   56 87 45 78

87和45交換:      45 87 78

87和78交換:         78 87

到此第一趟排序結束,接下來的每一趟排序都是這樣。

#includestdio.h

void Print(int *num, int n)

{

    int i;

    for(i = 0; i  n; i++)

        printf(“%d “, num[i]);

    puts(“\n”);

    return;

}

void Bubble_Sort(int *num, int n)

{

    int i, j;

    for(i = 0; i  n; i++)

    {

        for(j = 0; i + j  n – 1; j++)

        {

            if(num[j]  num[j + 1])

            {

                int temp = num[j];

                num[j] = num[j + 1];

                num[j + 1] = temp;

            }

            Print(num, n);

        }

    }

    return;

}

int main()

{

    int num[8] = {87, 12, 56, 45, 78};

    Bubble_Sort(num, 5);

    return 0;

}

C語言冒泡排序法是什麼?

冒泡排序法,是C語言常用的排序演算法之一,意思是對一組數字進行從大到小或者從小到大排序的一種演算法。

具體方法是:

相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);如果其與我們的期望一致,則不用交換。重複這樣的過程,一直到最後沒有數值需要交換,則排序完成。

C語言常見的排序演算法:

1、冒泡排序

基本思想:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出一個未排序中最大的數放到數組後面。

2、快速排序

基本思想:選取一個基準元素,通常為數組最後一個元素(或者第一個元素)。從前向後遍曆數組,當遇到小於基準元素的元素時,把它和左邊第一個大於基準元素的元素進行交換。在利用分治策略從已經分好的兩組中分別進行以上步驟,直到排序完成。

3、直接插入排序

基本思想:和交換排序不同的是它不用進行交換操作,而是用一個臨時變數存儲當前值。當前面的元素比後面大時,先把後面的元素存入臨時變數,前面元素的值放到後面元素位置,再到最後把其值插入到合適的數組位置。

4、直接選擇排序

基本思想:依次選出數組最小的數放到數組的前面。首先從數組的第二個元素開始往後遍歷,找出最小的數放到第一個位置。再從剩下數組中找出最小的數放到第二個位置。以此類推,直到數組有序。

以上內容參考   百度百科-排序演算法、百度百科-c語言冒泡排序

 

 

c語言編程冒泡

你說的嵌套定義和調用是什麼意思?

2.應該是 swap 吧?假如你用的是局部變數,那函數調換的就是局部變數,這時傳遞進來的參數就沒有被交換了。除了用全局變數,還可以用指針。

3.都是值傳遞,數組傳遞的是第一個元素的指針。

c語言冒泡法

實參是形參的拷貝

實參的值改變不影響形參

#include stdio.h

void exch(int *a,int *b)

{

int temp;

temp =*a;

*a=*b;

*b=temp;

}

void comexch(int *m,int *n)

{

if(*m*n)

exch(m,n);

}

void main()

{

int i,a[10];

printf(“please input 10 numbers:”);

for(i=0;i10;i++)

scanf(“%d”,a[i]);

for(i=0;i10;i++)

printf(“%d\n”,a[i]);

int j,k,temp;

for(j=0;j10;j++)

{

for(k=10;kj;k–)

comexch(a[k-1],a[j]);

}

printf(“\n結果為:\n”);

for(k=0;k10;k++)

printf(“%d\n”,a[k]);

}

C語言冒泡法

#includestdio.h

void main()

{

int a[10];

int i,j,t;

printf(“input 10 numbers:\n”);

for(i=0;i10;i++)

scanf(“%d”,a[i]);

for(j=0;j9;j++) /*進行9次循環 實現9趟比較*/

for(i=0;i9-j;i++) /*在每一趟中進行9-j次比較*/

if(a[i]a[i+1]) /*相鄰兩個數比較,想降序只要改成a[i]a[i+1]*/

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf(“the sorted numbers:\n”);

for(i=0;i10;i++)

printf(” %d”,a[i]);

}

擴展資料:

冒泡排序演算法的運作

1、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。

2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大(小)的數。

3、針對所有的元素重複以上的步驟,除了最後已經選出的元素(有序)。

4、持續每次對越來越少的元素(無序元素)重複上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。

簡單的表示

#include stdio.h

void swap(int *i, int *j)

{

int temp = *i;

*i = *j;

*j = temp;

}

int main()

{

int a[10] = {2,1,4,5,6,9,7,8,7,7};

int i,j;

for (i = 0; i 10; i++)

{

for (j = 9; j i; j–)//從後往前冒泡

{

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

{

swap(a[j], a[j-1]);

}

}

}

for (i = 0; i 10; i++)

{

printf(“%d\n”, a[i]);

}

return 0;

}

參考資料來源:冒泡排序-百度百科

原創文章,作者:RKSE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132786.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RKSE的頭像RKSE
上一篇 2024-10-03 23:54
下一篇 2024-10-03 23:54

相關推薦

  • 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
  • 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語言程序設計是一門重要的計算機專業課程。它涵蓋了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
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論