冒泡排序c語言代碼,冒泡排序C語言程序

本文目錄一覽:

輸入10個數,用冒泡排序法按由小到大順序排序並輸出??c語言的

如下參考:

#包括 stdio, h

Intmain()

Inta[10]={0};

IntI=0,j=0,t=0;

For (I = 0;我 10;我+ +)

{scanf (” % d “, a [I]);}

For (I = 0;我 10;我+ +)

{for (j = 0;J 10 – I;J + +) {

If (a [j] a [j + 1))

T=a,[j]。

A[j]=A,A+1加到[j]。

A[m+1]=t;

}}}

For (I = 0;我 10;我+ +)

{printf("%d",a[I]);}

返回0;}

任意輸入10個數據,程序運行:

擴展資料:

冒泡排序算法的複雜原理如下:

1.比較相鄰metaelements。如果第一個比第二個大,就交換它們。

2.對每一對相鄰的元素執行相同的操作,從第一對開始,到最後一對結束。此時,最後一個元素應該是最大的數。

3.對除最後一個元素之外的所有元素重複上述步驟。

4.每次對越來越少的元素重複上述步驟,直到沒有一對數字可供比較。

求 c語言選擇排序法和 冒泡排序法代碼?

冒泡排序法的具體實現方法是這樣的,從數組的第一個元素`arr[0]`開始,兩兩比較**(`arr[n],arr[n+1]`),如果前面的數大於後面的數(`arr[n] arr[n+1]`),那麼交換兩個元素的位置,把大的數往後移動。這樣依次經過一輪比較以後,最大的數將會被交換到最後的位置(arr[n-1])。

C語言實現Bubblesort:

void bubblesort(int a[], int m)

    {

        int i,j;

        int tmp;

        int flag = 0;  //設定標誌,如果第一次循環比較時沒有發生交換,則說明數組是升序排序,不用排序,提前結束循環。

        for(i = 0; i  m; i++)  //外層循環控制循環次數

        {

            for(j = 0; j  m-1-i; j++)    //內層循環控制每次循環里比較的次數。

            {

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

                {

                    tmp = a[j];

                    a[j] = a[j+1];

                    a[j+1] = tmp;

                    flag = 1;

                }

            }

    

            if(0 == flag)

            {

                printf(“No Sort\n”);

                break;

            }

            }

    }

選擇排序法的過程是,通**過比較,選擇出每一輪中最值元素,然後把他和這一輪中最最前面的元素交換**,所以這個算法關鍵是要記錄每次比較的結果,即每次比較後最值位置(下標)。

C語言實現(Selectionsort)

void selectionsort(int a[],int m)

    {

        int i,j;

        int k;

        int tmp;

        for(i = 0; i  m-1; i++)//控制循環次數,n個數需要n-1次循環

        {

            k = i;

            for(j = i+1; j  m ; j++)

            {

                if(a[j]  a[k])

                    k = j;

            }

            //i不等於k是就證明a[i]不是最小的,

            //i等於k時證明a[i]就是本輪比較過程中最小的值

            if(i != k)

            {

                tmp = a[i];

                a[i] = a[k];

                a[k] = tmp;

            }

        }

    }

冒泡排序的C語言代碼

程序如下:

# include malloc.h

# include stdio.h

int main(void)

{

    int i, j, t,num;

int * p;

printf(“請輸入要排序的數的個數:num=”);

scanf(“%d”, num);

p= (int *)malloc(num* sizeof(int));

//輸入要排序的數

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

{

printf(“請輸入第%d個要排序的數p[%d]=\n”, i+1,i);

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

}

//冒泡排序

for (i=0; inum-1; ++i)

{

for (j=0; jnum-1-i; ++j)

{

if (p[j]  p[j+1])  // 表示升序 表示降序

{

t = p[j];

p[j] = p[j+1];

p[j+1] = t; 

}

}

}

//輸出已經排序好的數

printf(“輸出已經排序好的數”);

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

{

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

}

printf(“\n”);

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語言冒泡排序法代碼是什麼?

所謂冒泡排序法,就是對一組數字進行從大到小或者從小到大排序的一種算法。

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

2、為了實現效果,我們得先定義一組待排序的數列以及各個變量。具體情況如下圖:

3、算法的實現,具體情況如圖:

4、運行結果顯示。具體情況如圖:

5、按照上面的程序,在第五趟(i=5)起泡時,計算機不僅要對“1,5,6,4”兩兩進行比較並排序,還要對“7,8,9,13”進行兩兩比較並排序,而“7,8,9,13”在第四趟起泡時就已經排序好了,所以再進行比較的話,就顯得非常多餘。圖示如下:

6、在上面程序的基礎上進行優化。具體情況如圖所示:

7、優化後的輸出結果。如圖所示:

C語言中選擇排序法和冒泡排序法代碼。

選擇排序:

void select_sort(int a[],int n)        //傳入數組的要排序的元素個數

{int i,j,min,t;

for(i=0;in-1;i++)

{  min=i;      //min:當前最小值下標

for(j=i+1;jn;j++)        //掃描餘下的部分

if(a[min]a[j])        //若有其它元素更小,就記錄其下標

min=j;

if(min!=i)        //保若最小值不在排序區首位,就換到首位

{t=a[min]; a[min]=a[i]; a[i]=t;}

}

}

冒泡排序:

void bubble_sort(int a[], int n)        //傳入數組的要排序的元素個數

{ int i, j, t;

for (j=0; jn-1; j++)        //n個元素比較n-1輪

for (i= 0; in-1-j;i++)   //比較相信的兩個數

if(a[i]a[i+1])          //若大小順序不符,就交換

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

}

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

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

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

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

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

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

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

    編程 2025-04-29

發表回復

登錄後才能評論