c語言資料結構,C語言資料結構 快速排序的問題

2021-04-14 09:07:20 字數 1404 閱讀 9019

1樓:匿名使用者

將++ ,--放在變數名後,

是先使用變數的值,再執行自加(自減)

開始時i為左邊界,j為右邊界

以x=s[i]為中回間答值,將小於x的值放在左邊,大於x的值放在右邊找到大於x的值將其放在s[j]中,j=j-1,找到小於x的值將其放在s[i]中,i=i+1,直到所有數值按兩邊放好。依次在區間n,n/2,n/4,...2執行上述過程,所有數字就排好序了

2樓:匿名使用者

你好,#include

void quicksort(int a[100],int s,int m);

int main()

t=a[s],a[s]=a[j],a[j]=t;

quicksort(a,s,j-1);

quicksort(a,j+1,m);}}

資料結構(c語言)中快速排序什麼時候排序最慢,什麼情況下使用快速排序?

3樓:求聊友

當數字很大的時候使用快速排序

c語言快速排序比較次數問題

4樓:匿名使用者

你可以用氣泡排序法自己試一試

目的:按要求從大到小或從小到大排序。

基本思路:對尚未排序的各元素從頭到尾依次依次比較相鄰的兩個元素是否逆序(與欲排順序相反),若逆序就交換這兩元素,經過第一輪比較排序後便可把最大(或最小)的元素排好,然後再用同樣的方法把剩下的元素逐個進行比較,就得到了你所要的順序。可以看出如果有 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)要的次數更多吧

5樓:匿名使用者

快速排序是先找到一個軸值,比較時把所有比軸值小的放到軸值的左邊,比軸值大的放到右邊,再在兩邊各自選取軸值再按前面排序,直到完成(1)已經排序完成,是最快的;

(2)反序,需要將小於5的轉移到5的左邊,大於5的轉移到5的右邊,每個數都要經過比較,所以是最慢的

(3)軸值為9,需要將9右邊的轉移到左邊,比較次數介於(1),(2)之間;

(4)軸值為5,需要將左邊的9轉移到5的右邊,3轉移到5的左邊;

總體比較次數(1)<(4)<(3)<(2)

資料結構c語言描述,資料結構(C語言描述)

include include include define datatype int define maxsize 1000 typedef struct nodebitreenode datatype bt maxsize bitreenode buildbtree datatype bt,in...

資料結構C語言

其實這個是跟a與b大小的定義有關係,a與b相等的情況比較好判斷,所有元素都相等那麼就相等了。但是什麼情況下a比b大?通常的定義是根據a與b第一個不相等的元素來判斷。考慮字串的情況可以做類比,比如兩個字串 abcd 與 abce 其實可以看做是兩個順序表 a a b c d b a b c e 那麼我...

c語言資料結構賦值問題,c語言版資料結構問題?

對應的結構體指標,那麼函式要定義成void initstack struct snode l 還有這程式有錯,傳進來的l只是副本,他的改變不影響到實參。應該用指標引數型別或引用型別。include include struct snode main int initstack struct snod...