1樓:匿名使用者
你可以用氣泡排序法自己試一試
目的:按要求從大到小或從小到大排序。
基本思路:對尚未排序的各元素從頭到尾依次依次比較相鄰的兩個元素是否逆序(與欲排順序相反),若逆序就交換這兩元素,經過第一輪比較排序後便可把最大(或最小)的元素排好,然後再用同樣的方法把剩下的元素逐個進行比較,就得到了你所要的順序。可以看出如果有 n 個元素,那麼一共要進行 n-1 輪比較,第 i 輪要進行 j=n-i 次比較。
(如:有5個元素,則要進行5-1輪比較。第3輪則要進行5-3次比較)
下面以c語言為例子給大家乙個明確的表示:
#include
void main()
}printf("排序結果:");
for( i = 0; i < 10; i ++ ) //依次輸出排序結果
printf("%d\t",a[ i ]);
printf("\n");
}我想的話(1)和(2)乙個從小到大,乙個從大到小,排序的次數最少吧(3)和(4)的話(4)要的次數更多吧
2樓:匿名使用者
快速排序是先找到乙個軸值,比較時把所有比軸值小的放到軸值的左邊,比軸值大的放到右邊,再在兩邊各自選取軸值再按前面排序,直到完成(1)已經排序完成,是最快的;
(2)反序,需要將小於5的轉移到5的左邊,大於5的轉移到5的右邊,每個數都要經過比較,所以是最慢的
(3)軸值為9,需要將9右邊的轉移到左邊,比較次數介於(1),(2)之間;
(4)軸值為5,需要將左邊的9轉移到5的右邊,3轉移到5的左邊;
總體比較次數(1)<(4)<(3)<(2)
c語言,快速排序,在最壞條件下需要比較的次數為多少
3樓:天雲一號
快速排序最壞的情況是初始序列已經有序,第1趟排序經過n-1次比較後,將第1個元素仍然定在原來的位置上,並得到乙個長度為n-1的子串行;第2趟排序經過n-2次比較後,將第2個元素確定在它原來的位置上,又得到乙個長度為n-2的子串行;以此類推,最終總的比較次數:
c(n) = (n-1) + (n-2) + ... + 1 = n(n-1)/2
最壞的情況下,快速排序的時間複雜度為o(n^2)
4樓:匿名使用者
假設有n個數,n(n+1)/2次
C語言排序問題,c語言的兩種排序?
你的分太少了,又要想演算法,又要程式設計,追分吧。c語言的兩種排序?下面是c語言裡面常用的三種排序方法,但願對樓主有幫助,一 冒泡法 起泡法 演算法要求 用起泡法對10個整數按公升序排序。演算法分析 如果有n個數,則要進行n 1趟比較。在第1趟比較中要進行n 1次相鄰元素的兩兩比較,在第j趟比較中要...
C語言氣泡排序原理,C語言氣泡排序。
include void main printf the sorted numbers n for i 0 i 10 i printf d a i 氣泡排序演算法的運作 1 比較相鄰的元素。如果第乙個比第二個大 小 就交換他們兩個。2 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步...
C語言問題,c語言問題
int a 4 void main int a 2 這種局 bai部變數,會du隱藏掉上一級 定義zhi的同名變數,下面dao 也是一樣回 中有效。所以上面的復合語句中,會輸出0,下面呼叫sub1時,實際上傳入的是main中的int a 2 又有a a 1,所以會輸出1,下面也是一樣的,main中的...