1.排序的基本概念
排序:給定一組記錄的集合,其相應的關鍵碼分別為,排序是將這些記錄排列成順序為的乙個序列,使得相應的關鍵碼滿足ks1≤ks2≤……≤ksn(稱為公升序)或ks1≥ks2≥……≥ksn(稱為降序)。
正序:待排序序列中的記錄已按關鍵碼排好序。
逆序(反序):待排序序列中記錄的排列順序與排好序的順序正好相反。
趟:在排序過程中,將待排序的記錄序列掃瞄一遍稱為一趟。
通常,一次排序過程需要進行多趟掃瞄才能完成。
2.排序演算法的穩定性:
假定在待排序的記錄集中,存在多個具有相同鍵值的記錄,
若經過排序,這些記錄的相對次序仍然保持不變,
即在原序列中,ki=kj且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。
3.排序的分類-根據排序資料在記憶體中還是在外存中:
1.內排序:在排序的整個過程中,待排序的所有記錄全部被放置在記憶體中
排序的分類-根據排序過程中所進行的基本操作分:
基於比較:基本操作——關鍵碼的比較和記錄的移動,其最差時間下限已經被證明為o(nlog2n)。
插入排序
交換排序
選擇排序
歸併排序
不基於比較:根據關鍵碼的分布特徵。比如,桶式排序,基數排序(多關鍵字排序)
分配排序
桶式排序
基數排序
2. 外排序:由於待排序的記錄個數太多,不能同時放置在記憶體,而需要將一部分記錄放置在記憶體,另一部分記錄放置在外存上,整個排序過程需要在內外存之間多次交換資料才能得到排序的結果
4.排序的儲存結構
從操作角度看,排序是線性結構的一種操作,待排序記錄可以用順序儲存結構或鏈結儲存結構儲存。
排序 資料結構
define maxsize 20 typedef int redtype typedef struct redtype typedef struct sqlist void straightinsertsort sqlist l l.r j 1 l.r 0 void shellsort sqlis...
排序(資料結構)
排序 不穩定排序 口訣 考研複習,情緒不穩定,快 快速 些 希爾 選 選擇 一堆 堆排序 研友 時間複雜度為nlogn的排序 口訣 快 快速 些 希爾 歸 歸併 隊 堆排序 1 include 2 using namespace std 34 排序 5 不穩定排序 口訣 考研複習,情緒不穩定,快 快...
快速排序 資料結構
include 函式宣告 void insertion sort int a,int n 插入排序 void swap int a,int b 交換陣列兩位元素的位置 intmedian int a,int left,int right 將基準放到倒數第二的位置,並返回基準的值 void qsort...