南郵資料結構實驗4 各種內排序演算法

2021-08-26 18:19:22 字數 1809 閱讀 6785

各種內排序演算法

//簡單選擇排序

void selectsort(list *list)

}if(small != i)

}}

//直接插入排序

void insertsort(list *list)

else break;

}list->d[j+1] = insertitem; //待插入元素有序存放至有序序列中

}}

//氣泡排序

void bubblesort(list *list)

}if(!isswap) break; //如果本趟排序沒有發生元素交換,排序完成

}}

//序列劃分方法

int partition(list *list,int low,int high)while(i < j);

swap(list->d[low],list->d[j]);

return j; //此時j是分割元素下標

}//快速排序

void quicksort(list *list,int low,int high)

}//函式過載

void quicksort(list *list)

/*

//序列兩路合併方法

//n1和n2是兩個子串行長度,low是第乙個子串行第乙個元素下標

void merge(list *list,entry *temp,int low,int n1,int n2)

while(i <= low+n1-1)

*temp++ = list->d[i++]; //剩餘元素直接拷貝至temp

while(j <= low+n1+n2-1)

*temp++ = list->d[j++]; //剩餘元素直接拷貝至temp

}//兩路合併排序演算法

void mergesort(list *list)

for(i = 0;i < list->n;i ++)

size *= 2; //子串行長度翻倍

}}*/

//merge函式,參考了陳慧南老師的《資料結構——c語言描述》教材

void merge(list *list,int temp,int i1,int j1,int i2,int j2,int *k)

else temp[(*k)++] = list->d[j++].key;

}while(i <= j1) temp[(*k)++] = list->d[i++].key; //將子串行1中剩餘元素存入temp

while(j <= j2) temp[(*k)++] = list->d[j++].key; //將子串行2中剩餘元素存入temp

}//mergesort函式,參考了陳慧南老師的《資料結構——c語言描述》教材

void mergesort(list *list)

else j2 = i2+size-1;

merge(list,temp,i1,j1,i2,j2,&k); //合併相鄰兩個子串行

i1 = j2+1; //確定下一次合併第乙個子串行的下界

}for(i = 0;i < k;i ++)

size *= 2; //子串行長度擴大一倍

}}

南郵資料結構實驗四 20南郵計算機考研經驗心得

20考研也接近尾聲了,前天收到了南京郵電大學計算機學院的擬錄取通知,於是不禁想寫一篇文章來記錄一下我考研的這一年。初試總分354,政治59,英語二66,數學二98,專業課 資料結構 131 初試 英語 政治 專業課資料結構,因為我考南郵,所以就一門資料結構,這也就能解釋為什麼南郵今年考研 了。專業課...

南郵資料結構實驗1 1 順序表的相關操作

題目 參照程式2.1 2.7,編寫 完成順序表的初始化 查詢 插入 刪除 輸出 撤銷等操作。部分 順序表的結構體定義 typedef struct seqlist 插入函式 初始化插入 status insert seqlist l,int i,elemtype x l element i 1 x ...

資料結構實驗4

題目 設計兩個棧 s1 s2 都採用順序棧方式,並且共享乙個儲存區 0,maxlen 1 為了盡量利用空間,減少溢位的可能,可採用棧頂相向 迎面增長的儲存方式,如圖 2 1 所示。設計乙個有關棧的入棧和出棧演算法。test.h include include include typedef stru...