ACM 各種排序

2021-07-09 14:11:52 字數 1226 閱讀 9711

/*簡單選擇排序*/

void select_sort(sqlist l)

//把無序區最小的挑出來

} if (i!=j)

}}//直接插入排序

void zhijie(sqlist l)

l->r[j+dk]=l->r[0]; //插入到正確位置

r->move ++;}}

}void shellsort(sqlist l,int dlta,int t) }}

//快速排序法

int partition(sqlist *l,int low,int high,recode *r)

l->r[low]=l->r[high]; //將比樞軸記錄小的記錄移到低端

while(lowr[low].key <=pivotkey)

l->r[high]=l->r[low]; //將比樞軸記錄大的記錄移到高階

r->move =r->move+2;

}l->r [low]=l->r [0]; //樞軸記錄到位

r->move ++;

return low; //返回樞軸位置

}void qsort(sqlist *l,int low,int high,recode *r)

}void quicksort(sqlist l)

/*堆排序*/

//堆調整演算法

void heapadjust (heaptype &l, int s, int m)

l.r[s] = rc; // 將調整前的堆頂記錄插入到 s (注意插入的位置為s j=2*s)

r.move++;

} // heapadjust

void heapsort ( heaptype &l )

for ( i=l.length; i>1; --i )

// 將堆頂記錄和當前未經排序子串行

// h.r[1..i]中最後乙個記錄相互交換

heapadjust(l, 1, i-1); // 對 l.r[1] 進行篩選

} // heapsort

void binsertsort(sqlist &l)

l.r[high+1] = l.r[0]; // 插入

}} // binsertsort

ACM寒假培訓 各種排序

基本思想 每次遍歷陣列,相鄰的兩個元素比較,公升序時 如果後面小於前面那麼就交換這兩個數,每次迴圈結束時使得乙個最大數冒泡至陣列尾部。最終實現全部排序。時間複雜度 o n 2 空間複雜度 o 1 優化 由於氣泡排序在進行排序時,遍歷一次的同時可以判斷該陣列是否有序,因而在排序時可以判斷如果當前陣列有...

ACM 各種模板整理

靜態仙人掌 圓方樹 includeusing namespace std define ll long long define pr std pair define mk a,b std make pair a,b const int maxm 2e5 5 const int maxn 1e5 5 ...

ACM各種題集及各種總結大全

acm題集以及各種總結大全!雖然退役了,但是整理一下,供小弟小妹們以後切題方便一些,但由於近來考試太多,顧退役總結延遲一段時間再寫!先寫一下各種分類和題集,歡迎各位大牛路過指正。杭州電子科技大學 hdu acm題目 連線 關於acm的幫助 連線 北京大學 poj 題目 連線 浙江大學 zoj 題目 ...