資料結構與演算法 複習 直接選擇排序 堆排序

2021-10-24 01:25:51 字數 1841 閱讀 7844

/**

* 程式說明:複習 直接選擇排序

*/#include

#include

struct recordnode

;//「記錄」型別

typedef

struct recordnode* precordnode;

struct sortobject

;//排序目標

typedef

struct sortobject* psortobject;

/** * 插入排序 建立記錄表

* @param m

* @return

*/psortobject createemptysortobject

(int m)

printf

("分配記錄表時出錯\n");

return pvector;

}printf

("分配排序目標時出錯\n");

return pvector;

}/**

* 插入排序 初始化資料

* @param pvector

* @param info

* @param key

* @param n

*/void

init

(psortobject pvector,

char

* info,

int* key,

int n)

}/**

* 插入排序 規格化列印

* @param pvector

*/void

printrecord

(psortobject pvector)}}

/** * 直接選擇排序5

* @param pvector

*/void

selectsort

(psortobject pvector)}if

(i != min)}}

/** * 將一顆二叉樹 變為 大根堆

* @param pvector

* @param size 調整樹的大小

* @param p 待調整結點

*/void

sift

(psortobject pvector,

int size,

int p)

if(temp.key < pvector->record[ch]

.key)

else

break

;//如果未執行調整,則沒有繼續探索的必要

} pvector->record[p]

= temp;

//temp點到達合適位置,插入

}/**

* 堆排序

* @param pvector

*/void

heapsort

(psortobject pvector)

for(i = pvector->n -

1; i >0;

--i)

}int

main()

;int key=

;int size =

sizeof

(key)

/sizeof

(int);

init

(pvector,info,key,size)

;printrecord

(pvector)

;heapsort

(pvector)

;//selectsort(pvector);

printrecord

(pvector)

;}

資料結構 直接選擇排序

直接選擇排序和直接插入排序有點類似,因為在整個排序過程中都將資料分為有序區和無序區,不同的是直接插入排序是將無序區的第乙個元素直接插入到有序區中合適位置以形成乙個更大的有序區,剛開始認為有序區的長度為1,而直接選擇排序是從無序區選乙個最小的元素直接放到有序區的最後,剛開始認為它的有序區長度為0。設待...

資料結構 直接選擇排序

直接選擇排序 straight select sorting 也是一種簡單的排序方法,它的基本思想是 第一次從r 0 r n 1 中選取最小值,與r 0 交換,第二次從r 1 r n 1 中選取最小值,與r 1 交換,第i次從r i 1 r n 1 中選取最小值,與r i 1 交換,第n 1次從r ...

資料結構與演算法複習 選擇排序 C 實現

include include student.h include sorttesthelper.h using namespace std 選擇排序 tparam t 使用模板可以接受任意型別引數 param arr 待排序的陣列 param n 陣列大小 template void select...