資料結構 排序

2021-09-26 01:12:02 字數 2958 閱讀 7386

排序
刷完一遍王道後,發現差不多又忘記了。所以打算用乙個月時間整理一下。先整理每一章的知識框架,然後時間充裕的話把書上的演算法整理,主要以南郵資料結構的考試大綱為主體,王道資料結構和陳慧南的資料結構(只作為補充內容,看了排序的一部分,覺得不是很好耶)為輔。

整理了五天(其實每天都是抽出一點時間,畢竟考研黨要學很多,哭泣。。。)

這個是網上搜的圖,懶得打**了,其實框架裡面也有,哈哈哈哈

下面是王道和陳慧南資料結構書上的演算法

1.排序使用的順序表和煉表結構

(針對陳慧南那本教材)

//排序使用的順序表和煉表結構

typedef int t;

typedef struct listlists;

typedef struct nodenode;

typedef struct listlist;

2.直接插入排序

//順序表的直接插入排序

void insertsort(list *lst)

}

//單鏈表的直接插入排序演算法

void insertsort(list *lst)

else //若待插記錄大於等於第乙個記錄

if(unsorted==p) sorted=unsorted;//將待插記錄在有序子表末尾

else //將待插記錄插在結點*q之後 }}

} }

//直接插入排序(王道)

void insertsort(elementype a,int n)

void shellsort(list *lst)

}

//希爾排序(王道)

void shellsort(elementtype a,int n)

for(j=i-1;j>=high+1;--j)

a[j+1]=a[j];//統一後移元素,空出插入位置

a[high+1]=a[0];//插入操作

}}

5.氣泡排序

//氣泡排序(王道)

void bubblesort(elemtype a,int n)

if(flag==false)

return;//本趟遍歷後沒有發生交換,說明表已經有序 } }

6.快速排序

//快速排序(王道)

void quicksort(elemtype a,int low,int high)

void adjustdown(elemtype a,int k,int len)

} a[k]=a[0];//將篩選結點的值放入最終的位置

}//向上調整堆

void adjustup(elemtype a,int n)

}

9.歸併排序

//歸併排序(王道)

elemtype *b(elemtype *)malloc(n+1)*sizeof(elemtype);//輔助陣列b

void merge(elemtype a,int low,int mid,int high)

while(i<=mid) a[k++]=b[i++];//若第乙個表未檢測完,複製

while(j<=high) a[k++]=b[j++];//若第二個表未檢測完,複製

} //合併

void mergesort(elemtype a,int low,int high)

else

} if(p==null) rear->link=q;//將乙個鍊錶的剩餘部分鏈至結果鍊錶的尾部

else rear->link=p;

return head.link;//返回結果鍊錶的起始結點位址

} //2.分割函式,將乙個鍊錶分割成兩個長度基本相等的鍊錶

//pos指標和mid開始向後移動,pos每次向後移動兩個結點,mid每次向後一定乙個結點。

//等到pos移出最後乙個結點成為空指標,以mid指示的結點作為前半部分子表的表尾。

//函式值最後返回後半結點表的頭指標

node *divide(node *p) }

q=mid->link;mid->link=null;

return q;

} //3.兩路合併排序

//首先呼叫函式divide對鍊錶對半分割成前後兩個子鍊錶。分別對這兩個子鍊錶實行合併排序。

//也就是進行兩次遞迴呼叫,將這兩個子鍊錶分別排序成有序表。

//最後,呼叫merge函式將這兩個有序子鍊錶合併成乙個有序鍊錶,從而結束合併排序。

void rmsort(node** sublst)

} void rmergesort(list *lst)

小結哈哈哈

資料結構 排序

小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...

資料結構 排序

郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...

資料結構 排序

1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...