C 順序表的排序

2021-10-01 04:24:44 字數 2813 閱讀 5704

#include

#include

#include

using

namespace std;

#define maxsize 20

//順序表最大長度

typedef

struct

redtype;

//記錄型別

typedef

struct

sqlist;

//順序表型別

//對順序表l中的記錄進行直接插入排序

void

insertsort

(sqlist &l)

l.r[j+1]

=l.r [0]

;}}}

//對順序表l中的記錄進行折半插入排序

void

binsertsort

(sqlist &l)

for(j=i-

1;j>=high+

1;j--

) l.r[high+1]

=l.r[0]

;}}}

//對順序表l中的記錄進行一趟增量為dk的希爾排序

void

shellinsert

(sqlist &l,

int dk)

l.r[j+dk]

=l.r[0]

;}}}

//對順序表l中的記錄按增量序列(儲存在陣列dt中)進行t趟希爾排序

void

shellsort

(sqlist &l,

int dt,

int t)

}//對順序表l中的記錄進行氣泡排序

void

bubblesort

(sqlist &l)}}

}//對順序表l中的子表l.r[low...high]進行一次劃分,並返回樞軸位置

intpartition

(sqlist &l,

int low,

int high)

l.r[low]

=l.r[0]

;return low;

//**補充完整後,刪除該行

}//對順序表l中的子串行l.r[low...high]進行快速排序

void

qsort

(sqlist &l,

int low,

int high)

}//對順序表l中的記錄進行快速排序

void

quicksort

(sqlist &l)

//對順序表l中的記錄進行簡單選擇排序

void

selectsort

(sqlist &l)}}

//堆的調整,假設l.r[s+1...m]已經是乙個大根堆,該操作將l.r[s...m]調整為以l.r[s]為根的大根堆

void

heapadjust

(sqlist &l,

int s,

int m)

l.r[s]

=rc;

}//把順序表l中的無序記錄序列建成大根堆

void

creatheap

(sqlist &l)

//對順序表l中的記錄進行堆排序

void

heapsort

(sqlist &l)

}//將有序表r[low...mid]和r[mid+1...high]歸併為有序表t[low...high]

void

merge

(redtype r[

],redtype t,

int low,

int mid,

int high)

while

(i]=r[i++];

while

(j]=r[j++];

}//將r[low...high]中的記錄歸併排序後放入t[low...high]中

void

msort

(redtype r[

],redtype t,

int low,

int high)

//對順序表l中的記錄進行歸併排序

void

mergesort

(sqlist &l)

//建立順序表:向順序表l中新增10個記錄,記錄的關鍵字為1-100範圍內的隨機整數

void

createlist

(sqlist &l)

l.length =10;

}//輸出順序表l中各記錄關鍵字的值,中間用空格分隔

void

printlist

(sqlist l)

cout<}//程式選單

void

showmenu()

intmain()

;//dt中存放的是希爾排序時使用的三個增量

createlist

(l);

//建立長度為10的順序表l,表中記錄的關鍵字為1-100範圍內的隨機整數

showmenu()

; cin>>n;

//輸出選擇的排序方法序號

while

(n!=0)

//迴圈顯示選單,按0結束程式

switch

(n)//根據選擇的序號呼叫不同的排序方法

createlist

(l);

//每次排序後,重置l中的10個記錄

showmenu()

; cin>>n;

system

("cls");

//清屏

}}

順序表奇偶排序 C語言

題目 建立乙個順序表,已知順序表l中的元素為int,請將l中的奇數元素排在前面,偶數元素排在後面。時間複雜度o n 空間複雜度o 1 1 2 include include define maxsize 100 define elemtype int define true 1 define err...

C 順序表的實現

順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。ifndef list h define list h template class list endif ifndef seqlist h define seqlist h include l...

順序表的合併(C )

把兩個無序表合成乙個有序表 例如 把la和lb合成lc。la 1,5,2,3,9 lb 6,8,4,7 lc 1,2,3,4,5,6,7,8,91.設兩個無序表為la和lb,因為順序表是無序的,而且順序表難以直接排序,所以我先把la和lb弄成陣列a和陣列b,因為陣列排序十分容易,可以直接採用內建的a...