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

時間 2021-07-12 17:31:24

1樓:匿名使用者

/*由於你傳遞的l是值傳遞,在快速排序內部出現了一個名字一樣的區域性變數,只是區域性變數被排序了,並不是傳入的變數被排序,可以採用傳地址的方式解決,或者不定義形參,直接採用全域性變數。我使用前者幫你實現了

再者,快速排序**有點問題,幫你修改了下*/#include

#include

#define maxsize 20

typedef struct

redtype;

typedef struct

sqlist;

sqlist l;

int partition(sqlist *l,int low,int high)

l->r[i]=l->r[0];

return i;

}void quicksort (sqlist *l,int low,int high)

}main()

len=l.length-1;

quicksort (&l,1,len);

printf("結果為:");

for(i=1;i<=len;i++)

printf("%4d",l.r[i].key);}

2樓:匿名使用者

int partition(sqlist& l,int low,int high)

void quicksort (sqlist& l,int low,int high)//都加上引用&

c語言資料結構----快速排序的問題 5

3樓:匿名使用者

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

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

開始時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執行上述過程,所有數字就排好序了

4樓:匿名使用者

你好,#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);}}

資料結構中快速排序演算法的不足以及改進? 20

5樓:匿名使用者

一般快速排序演算法都是以最左元素作為劃分的基準值,這樣當資料元素本身已經完全有序(不管正序或者逆序)時,每一趟劃分只能將一個元素分割出來,其效率很低:時間複雜度o(n^2),空間複雜度為o(n)

所以改進方法就是找尋合適的基準值,保證不至於在關鍵字有序或者接近有序時發生這個情況,一般可以使用三者取中(就是待劃分序列的頭元素、尾元素、中間元素三者的中間值)、或者隨機選擇等方法,這樣即使關鍵字完全有序,也可以保證時間複雜度o(nlogn),空間複雜度o(logn)

6樓:匿名使用者

chiconysun說的很好,做一點小小的補充:

在資料量較大時,遞迴呼叫本身的消耗對演算法的時間效率也會產生一定影響,採用非遞迴實現,或者在待排序區間小於某值(有實驗資料表明15左右較合適)時,採用其它非遞迴的排序方法代替快速排序,可以達到更高的時間效率。

相對於關鍵值的選取,這一優化帶來的提升有限(親測結果,提升10%左右,選擇了插入排序做替代)。

C語言資料結構,C語言 資料結構

include include defineinfinity0 definemax vertex num10 最大頂點數 definemax edge num40 最大邊數typedefenumgraphkind typedefcharvertextype 頂點資料型別typedefstructar...

資料結構中的排序問題,急,資料結構 排序問題

排序方法小結 方法比較。綜合比較各種內部排序方法,其效能如下入所示 方法 平均時間 最壞情況 輔助空間 穩定性 特點。插入排序 o n2 o n2 o 1 n 30常用。希爾排序 o o o 1 不常用。起泡排序 o n2 o n2 o 1 初學。快速排序 o nlnn o n2 o n 常用,易惡...

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

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