freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

天津科技大學數(shù)據(jù)結構排序-在線瀏覽

2024-12-06 15:10本頁面
  

【正文】 復制為監(jiān)視哨 for ( j=i1。 j ) R[j+1] = R[j]。 // 插入到正確位置 } } // InsertSort 排序的時間分析: 實現(xiàn)排序的基本操作有兩個: ( 1)“比較”序列中兩個關鍵字的大?。? ( 2)“移動”記錄。 直接插入排序是一種穩(wěn)定的排序方法。 二、折半插入排序 由于 R[1..i1]是一個按關鍵字有序的有序序列,則可 利用折半查找實現(xiàn)“在 R[1..i1]中查找 R[i]的插入位置” ,如此實現(xiàn)的插入排序為折半插入排序。 void BInsertionSort (Elem R[ ], int n) { // 對記錄序列 R[1..n]作 折半插入排序 。 i=。 // 將 R[i]暫存到 R[0] low = 1。 while (low=high){//在 R[low..high]中折半查找插入的位置 m = (low+high)/2。 else low = m+1。 j=high+1。 // 記錄后移 R[high+1] = R[0]。 例如: 下標 0 1 2 3 4 5 6 7 8 關鍵字 MAXINT 49 38 65 97 76 13 27 49* 初值 1 0 i=2 2 0 1 i=3 2 3 1 0 i=4 2 3 1 4 0 i=5 2 3 1 5 0 4 i=6 6 3 1 5 0 4 2 i=7 6 3 1 5 0 4 7 2 終值 6 8 1 5 0 4 7 2 3 void LInsertionSort (Elem SL[ ], int n){ // 對記錄序列 SL[1..n]作 表插入排序 。 SL[0].next = 1。 for ( i=2。 ++i ){//結點 i插在結點 j、 k之間 j=0。 //j頭結點, k a1 while(SL[k].key=SL[i].key) {j=k, k=SL[k].next }。 SL[i].next = k。 //p=6 for ( i=1。 ++i ) { while (pi) p = SL[p].next。 if ( p!= i ) { SL[p]←→SL[i]。 } p = q。 基本思想 對待排記錄序列先作“宏觀”調整,再作“微觀”調整。 將記錄序列分成若干個 由不相鄰的記錄構成的子序列 ,每個子序列分別進行插入排序。 例如: 1 2 3 4 5 6 7 8 9 10 1116 25 12 30 47 11 23 36 9 18 3116 11 3125 2312 3630 947 1811 23 12 9 18 16 25 36 30 47 3111 9 25 4723 18 36 3112 16 309 18 12 11 23 16 25 31 30 47 369 11 12 16 18 23 25 30 31 36 47第二趟希爾排序,設增量 d = 3第一趟希爾排序,設增量 d = 5第三趟希爾排序,設增量 d = 1void ShellInsert(SqList amp。本算法是和一趟直接插入排序相比,作了以下修改: 1. 前后記錄的增量是 dk,而不是 1。當 j=0時,插入位置已找到 int i,j。 i=。 //暫存在 0號單元 for(j=idk。amp。 j = dk) [j+dk]=[j]。 //插入到正確的位置 } } void ShellSort(SqList amp。kt。 //一趟增量為 dlta[k]的插入排序 } 快速排序 它屬 交換排序 , 起泡排序是最簡單的一種交換排序 。 void BubbleSort(SqList amp。 int i,j,t。 for(i=,change=True。amp。i){ change=False。ji。 } } } 算法分析 最好情況:初始時關鍵字遞增有序,每一趟排序中僅需進行一次關鍵字的比較,所以總的比較次數(shù)為n1。 最壞情況:初始時關鍵字遞減有序,此時記錄比較和移動次數(shù)分別為: ????????????????nininOnninOnni2222)(2/)4)(1()21()(2/)1)(2(移動次數(shù)的最大值比較次數(shù)的最大值 直接插入排序是一種穩(wěn)定的排序方法。 快速排序 比較次數(shù)較少、內(nèi)部排序中速度較快的方法。 49 38 65 97 76 13 27 49’ 38 65 97 76 13 27 49’ 27 38 65 97 76 13 49’ 27 38 97 76 13 65 49’ 27 38 13 97 76 65 49’ 27 38 13 76 97 65 49’ 27 38 13 49 76 97 65 49’ 49 temp 快速排序示例 快速排序算法 int PARTITION(rectype R[],int l,int h){ int i=l。 rectype temp=R[i]。amp。 if (ij) R[i++]=R[j]。amp。 if (ij) R[j]=R[i]。 R[i]=temp。 } QUICKSORT(rectype R[],int s1,int t1){ int i。 QUICKSORT(R,s1,i1)。 } } ????????112 )(2/)1()(ninOnnin比較次數(shù)的最大值最好情況 每次所取的基準都是當前無序區(qū)的 “中值”記錄,劃分的結果是基準的左右兩個無序子區(qū)的長度大致相等。假設文件長度 n=2k , k=log2n,因此有: 快速排序的記錄移動次數(shù)不會大于比較次數(shù),所以,快速排序的最壞時間復雜度為 O(n2);最好時間復雜度為 O(nlog2n)。 快速排序是不穩(wěn)定的排序方法。 兩種常見的選擇排序 直接選擇排序 堆排序 直接選擇排序的基本過程 在一組對象 V[i]到 V[n1]中選擇具有最小關鍵字的對象若它不是這組對象中的第一個對象,則將它與這組對象中的第一個對象對調。 49 38 65 97 76 13 27 49’ 13 38 65 97 76 49 27 49’ 13 27 65 97 76 49 38 49’ 13 27 38 97 76 49 65 49’ 13 27 38 49 76 97 65 49’ 13 27 38 49 49’ 97 65 76 13 27 38 49 49’ 65 97 76 13 27 38 49 49’ 65 76 97 直 接 選擇 排序 示 例 直接選擇排序算法 SELECTSORT(rectype R[]) { int i,j,k。 for (i=0。i++)
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1