內部排序演算法
時間複雜度: o(n^2) o(n^2) o(n^2)
空間複雜度: o(1) o(1) o(1)
演算法名稱: 插入 選擇 冒泡
演算法名稱: 希爾 堆 快速 歸併 基數
空間複雜度:o(1) o(1) o(logn) o(n) o(2rd)
時間複雜度:o(nlogn) o(nlogn) o(nlogn) o(nlogn) o(d(n+rd))
穩定的:插入 冒泡 歸併 基數
其它:不穩定排序。
示列**:
#include#includeusing namespace std;
#define maxsize 500
typedef int keytype;定義關鍵字型別
typedef char infotype;
struct rectype
r[maxsize],r1[maxsize];
//插入排序
void strinssort(rectype r,int n)//直接插入排序
}void shellsort(rectype r,int n)//希爾排序
} }}void bubblesort1(rectype r,int n)//改進的起泡排序
} i = lastexchange; }}
//快速排序也叫分割槽交換排序
int partition(rectype r,int low,int high)
else
}} else
} }}
void qsort(rectype r,int low,int high)
for(int j=n;j>1;j--) }
//歸併排序
void merge(rectype r,rectype r1,int i,int l,int h)
if(i<=l)//將剩餘的r[i..l]複製到r1 }
if(j<=h)//將剩餘的r[j..h]複製到r1 }
}void msort(rectype r,rectype r1,int s,int t)
}void mergesort(rectype r,int n)//2-路歸併排序
void select()
cout<<"序列初始化完成"<
資料結構6 2內部排序
假設含n個記錄的序列為 其對應的關鍵字序列為 這些關鍵字的排列方式有多種,其中至少有一種排列方式能使得關鍵字之間存在著這樣乙個關係 kp1 kp2 kpn 按此關係將記錄序列重新排列為 即為有序記錄,將這一過程稱為排序。若在乙個記錄序列中ki kj,且在排序前的序列中ri領先於rj。若在排序後的序列...
資料結構 內部排序法
總結一些演算法的實現 交換排序 1.冒泡演算法 typedef struct arr1 arr1 void bubblesort arr1 goal,int n if flag m沒有交換時證明排玩了,跳出迴圈結束排序。return 2.快速排序 時間複雜度為o nlog2n 空間複雜度為o log...
資料結構 內部排序之氣泡排序
1.基本思想 每次比較兩個相鄰的元素,如果他們的順序錯誤就把他們交換過來 2.具體做法 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越...