資料結構之排序(未完,待續)

2021-08-22 08:35:02 字數 2116 閱讀 4506

//資料結構知識點總結

//插入排序

//主**

#include

void insertsort(int * a, size_t n)//直接插入排序

else}}

}//希爾排序

void shellsort(int *a, size_t n)//希爾排序

else}}

gap = gap / 3 + 1;

}//直接插入排序

insertsort(a, n);

}//對比,直插排序:時間複雜度,最好情況o(n);最壞情況o(n^2),空間複雜度o(1)。

//希爾排序,時間複雜度大約在o(n^1.25)~o(1.6n^1.25) ,空間複雜度o(1)。

void selectsort(int *a, size_t n)//選擇排序

}swap(&a[min], &a[i]);

}}void selectsort(int *a, size_t n)

if (a[max] < a[i])

}swap(&a[left], &a[min]);

if (left != max)

left++;

right--;

}}//堆排序

//先將數組建堆,如果要排公升序,就鍵大堆,排降序,就建小堆

//建堆完畢後,用替換法進行排序

void adjustdown(datatype* a, size_t n, int root)//建大堆

if (a[parent] < a[child])

else

}}void makeheap(datatype*a, size_t n)//建堆

}void heapsort(datatype* a, size_t n)

}//選擇排序:時間複雜度o(n^2),空間複雜度o(1),堆排序:時間複雜度o(n*logn),空間複雜度o(1)

//快速排序

//快排的三種方法

int leftrightpointer(int*a, int left, int right)//左右指標法

while (begin < end&&a[begin] <= key)

swap(&a[begin], &a[end]);

}swap(&a[begin], &a[right]);

return begin;

}void quicksort(int* a, int left, int right)

int div = leftrightpointer(a, left, right);

quicksort(a, left, div - 1);

quicksort(a, div + 1, right);

}//快排的優化,以左右指標法為例

int mid(int* a, int left, int right)//三數取中法

else

if (a[right] < a[mid])

else

}else

else

if (a[left] < a[mid])

else

}}int leftrightpointer(int* a, int left, int right)//左右指標快排

while (begin < end&&a[end] >= key)

swap(&a[begin], &a[end]);

}swap(&a[begin], &a[right]);

return begin;

}直接插入排序:時間複雜度:最好o(n),最壞 o(n^2),空間複雜度o(1),優缺點,越接近有序越快,穩定性:穩定。

選擇排序:時間複雜度:o(n^2),空間複雜度o(1),優缺點,效率最低,唯一的優點是直觀,穩定性:不穩定。

堆排序:時間複雜度o(n*logn),空間複雜度o(n),優缺點:所有排序方式中,整體而言最快。穩定性:不穩定。

氣泡排序:時間複雜度o(n^2),空間複雜度o(1),優缺點:效率不是很快。穩定性:穩定

快速排序:時間複雜度: 優化後o(n*logn),空間複雜度:遞迴:o(1),非遞迴o(n),

優缺點:效率快,難理解。

穩定性:不穩定。

資料結構複習 排序(未完待續)

假設含有n個記錄的序列為,其相應的關鍵字分別為,需確定1,2,n的一種排列p1,p2,pn,使其相應的關鍵字分別滿足kp1 kp2 kpn非遞減 或非遞增 關係,即使得序列稱為乙個按關鍵字有序序列,這樣的操作就稱為排序。假設ki kj i n,1 j n,i j 且在排序前的序列中ri領先於ri 即...

資料結構大綱(二) 未完,待續

排序技術 線性表查詢技術 順序表的順序查詢 折半查詢 線性表必須有序,必須採用順序儲存 非遞迴演算法 樹表查詢技術 二叉排序樹 中序遞增 雜湊表查詢技術 未整理 插入排序 直接插入排序 穩定的排序方法 下次寫希爾排序 不穩定 下次寫 交換排序 起泡排序 又稱氣泡排序 穩定 public class ...

資料保護 未完待續

1.2 安全標準簡介 二 資料庫安全性控制 2.5資料庫角色 2.6強制訪問控制的方法 三 檢視機制 二 資料庫的完整性 保護資料庫以防止不合法使用造成的資料洩露 更改和破壞。1.1 資料庫的不安全因素 1 非授權使用者對資料庫的惡意訪問和破壞 2 資料庫中重要或敏感的資料被洩露 3 安全環境的脆弱...