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...