c語言冒泡排序升序降序,冒泡法降序排列c語言

本文目錄一覽:

C語言冒泡排序降序沒問題,升序有問題,為什麼?

第1,冒泡演算法是沒有問題的,這是經過時間驗證的演算法。如果你的實現出了問題,肯定是你的實現有問題。

第2,單給一個結果,是看不出原因的。只能猜測是你的實現里,鏈表越界了。所以,你要想讓別人幫你分析,就需要把源碼發出來。

C語言冒泡排序加解題思路?

冒泡排序,就是對一組數進行逐趟排序的方法,具體分為升序和降序。

以升序為例。

每一趟的任務,就是從一組數的第一個數開始,依次比較相鄰的兩個數的大小。既然是升序,那麼比較後,如果前者大於後者,那麼兩者交換位置。就這樣依次地比下去。

這樣的話,第一趟就把最大的數排到了最後。

而每再比較一趟的時候,都排除已經生成的結果,比如第二趟,不會再比較最後一個數(它已經是最大的了,當然如果比較也沒問題,浪費時間而已);第三趟,不會再比較最後兩個數。。。

每一趟都把最大的數排到當前範圍的末尾。

這樣循環下去,每一趟都會把當前範圍內最大的數扔到後面去。排序就完成了。

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

舉個升序排序的例子:

對於{ 10,5,3,11,9 }這組數,

第一趟,10與5比較,10 比5大,所以互換位置(5,10,3,11,9),10和3比較,103,所以互換位置(5,3,10,11,9),10與11比較,不用互換位置;11與9比較,互換位置(5,3,10,9,11),第一趟結束;

第二趟,由於11已經是最大的,那麼只剩下{5,3,10,9};53,所以互換位置(3,5,10,9);510,不用互換位置;109,互換位置(3,5,9,10),第二趟結束。

第三趟,只剩下{3,5,9},35,不用互換位置;59,不用互換位置,第三趟結束。

第四趟,只剩下{3,5},35,不用互換位置,第四趟結束。

此時由於只剩兩個數,本趟已經把兩個數較大的一個放到了第二的位置,所以循環到此結束。

結果就是{3,5,9,10,11}。

過程中,每一趟都會把相鄰的兩個數中較大的換到後面,即每趟中,最大的數都會被置換到最後,就像一個氣泡浮出水面一樣,越來越大,到出水時就是最大的。所以才叫冒泡排序。

C語言冒泡排序可以設置要升序還是降序嗎?

可令flag為相鄰兩數判斷時乘上的係數,升序時為1,降序時為-1

這樣 -a -b 即等價於 a b,就可將升序變為降序

具體代碼和運行結果如下:

可見同一個函數,flag=1時實現了升序,flag=0時實現了降序,望採納~

附源碼鏈接:冒泡排序

請高手精細地講解C語言的冒泡排序法,解釋每個語句,以及升序和降序問題?

例:int a[10] ; //設有10個元素的int型數組

int i = 0 , j = 0 , n = 0;

for( i = 0 ; i 9 ; i++ ) //外層循環最大值為數組大小減一

{

for( j = i+1 ; j 10 ; j++ ) //內層循環從外層循環的後面一

//個數(j=i+1)開始,到最後

{

if( a[i] a[j] ) //該比較大小所示為升序。

//若a[i] a[j] ,交換的話,為降序。(前大升,後大降)

{

n = a[i] ;

a[i] = a[j] ; //交換

a[j] = n ;

}

}

} //完成

編程,不會就問,很好!但,更重要的是,必須自己先好好想過之後,還不明白,再問,再查資料(很重要)。呵呵···

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

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

相關推薦

  • 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中升序排列的if語句

    本文將為大家介紹Python中升序排列的if語句。首先,我們來看一下如何實現。 if a > b: a, b = b, a if b > c: b, c = c, b …

    編程 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

發表回復

登錄後才能評論